From 356505d85031324caa0782513cffce1014e17a0d Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Wed, 20 Jul 2016 03:47:17 +0200 Subject: [PATCH] beesh: Enable versionless bee filenames by setting #@beepackage in beefile use '#@beepackage pkg-1.0-0' to set version information within bee file. the bee file needs to match .bee or .bee This enables bee-files to be stored in git repositories and track changes. --- src/beesh.sh.in | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/beesh.sh.in b/src/beesh.sh.in index 3dd4d04..744153d 100644 --- a/src/beesh.sh.in +++ b/src/beesh.sh.in @@ -141,8 +141,6 @@ function check_rebuild() { return 0 fi - print_warning "please increase revision number" - beefile_dir=${beefile%/*} eval $(${BEEVERSION} "${beefile}") @@ -150,13 +148,13 @@ function check_rebuild() { beefile_pattern=${beefile_pattern//+/\\+} # replace all + with \+ beefile_pattern=${beefile_pattern//./\\.} # replace all . with \. - beefile_max=$(for bf in $(ls "${beefile%/*}/${beefile_pattern}*.bee" "${BEE_BEEDIR}/${beefile_pattern}*.bee" 2>/dev/null |\ + beefile_max=$(for bf in $(ls ${beefile%/*}/${beefile_pattern}*.bee ${BEE_BEEDIR}/${beefile_pattern}*.bee 2>/dev/null |\ grep -E "/${beefile_pattern}-[0-9]+.bee") ; do echo "${bf}" done | ${BEESORT} | tail -1) eval $(${BEEVERSION} ${beefile_max}) - print_warning "cp ${beefile} ${PWD}/${PKGFULLNAME}-${PKGFULLVERSION}-$((PKGREVISION + 1)).bee" + print_warning "please increase revision number to $((PKGREVISION + 1))" exit 1 } @@ -949,7 +947,33 @@ PKGNAME= PKGVERSION= PKGREVISION= -eval $("${BEE_BINDIR}/beeversion" "${BEE}") +set +e + +BEEOVERWRITE=( $(grep -m 1 '^#@beepackage' "${BEE}") ) +if [ $? == 0 ] ; then + ver=${BEEOVERWRITE[1]} + overwrite=1 +else + ver=${BEE} + overwrite=0 +fi + +set -e + +eval $("${BEEVERSION}" "${ver}") + +if [ "${overwrite}" == 1 ] ; then + if [ "${BEE##*/}" == "${PKGNAME}.bee" ] ; then + : + elif [ "${BEE##*/}" == "${PKGFULLNAME}.bee" ] ; then + : + elif [ "${BEE##*/}" == "${PKGFULLPKG}.bee" ] ; then + print_warning "***ATTENTION***: using full beefile name (including version) and the #@beepackage feature at the same time." + else + print_error "filename '${BEE##*/}' does not match '${BEEOVERWRITE[1]}' set as #@beepackage for PKGNAME or PKGFULLNAME" + exit 1 + fi +fi if [ -z "${PKGNAME}" -o -z "${PKGVERSION}" -o -z "${PKGREVISION}" ] ; then print_error "${BEE}: please use the proper package versioning (e.g. package-1.0-0)" @@ -986,7 +1010,7 @@ config_export ############################################################################### -check_rebuild "${BEE}" "${PKGALLPKG}" +check_rebuild "${BEE%/*}/${PKGFULLPKG}.bee" "${PKGALLPKG}" print_info "current working directory: ${PWD}"