From 8ed70faaaaf576046fc39a5e4877ea02df473710 Mon Sep 17 00:00:00 2001 From: fabolous005 Date: Sun, 29 Sep 2024 19:28:21 +0200 Subject: [PATCH] add revision support for versioning --- etools | 14 +++++--------- helper.sh | 11 +++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/etools b/etools index ff341ed..1c6e085 100644 --- a/etools +++ b/etools @@ -52,9 +52,8 @@ function etools_get_version() { local latest=: . ./helper.sh [ "$ETOOLS_CHECK_LIVE" ] && if _matches_live "$1"; then - latest="$(ls -1vr ${ETOOLS_REPO_PATH:-/var/db/repos}/*/$1/*9999*.ebuild | head "-${2:-1}" 2>/dev/null)" - [ -n "$latest" ] && latest=${latest%.ebuild} && latest=${latest##*-} && \ - ./helper.sh && echo "$latest" && return 0; + latest="$(ls -1vr "${ETOOLS_REPO_PATH:-/var/db/repos}/*/$1/*9999*.ebuild" | head "-${2:-1}" 2>/dev/null)" + [ -n "$latest" ] && _extract_version "$1" && ./helper.sh && return 0; fi if [ "$ETOOLS_CHECK_TESTING" ]; then . /etc/portage/make.conf @@ -66,15 +65,12 @@ function etools_get_version() { if [[ "$ACCEPT_KEYWORDS" == *"~$arch"* ]] || _matches_testing "$1" "\~$arch"; then latest=$(_get_latest "$1" "${package_offset[$1]:-0}" "~$arch") fi - [ -n "$latest" ] && latest=${latest%.ebuild} && latest=${latest##*-} && \ - ./helper.sh && echo "$latest" && return 0; + [ -n "$latest" ] && _extract_version "$1" && ./helper.sh && return 0; fi _get_latest "$1" "${package_offset[$1]:-0}" "$arch" - # WARN: this will not work for revision, because of the second expansion - [ -n "$latest" ] && latest=${latest%.ebuild} && latest=${latest##*-} && \ - ./helper.sh && echo "$latest" && return 0; - ewarn "No version found for package: $1$( (( ! offset == 0 )) && echo " with offset $offset")" + [ -n "$latest" ] && _extract_version "$1" && ./helper.sh && return 0; + ewarn "No version found for package: $1$( (( ! offset == 0 )) && echo " with offset $offset")" } diff --git a/helper.sh b/helper.sh index 1b9feaa..316d4e0 100755 --- a/helper.sh +++ b/helper.sh @@ -14,6 +14,7 @@ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then _matches_live \ _matches_testing \ _get_latest \ + _extract_version \ _filter; do unset $function || echo "failed to unset function: $function" @@ -198,3 +199,13 @@ function _get_latest() { (( ! offset < 0 )) && ewarn "Unused offset of: $offset" echo "$latest" } + +function _extract_version() { + local ebuild="$1" + local revision=: + ebuild=${ebuild%.ebuild} + revision=$(echo "$ebuild" | sed -n 's/.*\(-r[0-9]\+\).*/\1/p') + ebuild=${ebuild/-r[[:digit:]]} + ebuild=${ebuild##*=} + echo "$ebuild$revision" +}