On 29/4/19 4:07 am, [email protected] wrote: > From: ekardnam <[email protected]> >
Adding a commit message with a brief description of what this patch does would be great. Also add a line with the number of the bug it fixes. I do not like --dont-downgrade because of the "dont". Abbreviations should be avoided. I'm also not a fan of "--no-downgrade" How about "--prevent-downgrades" and adding a short option? "-p" or "-d" would work. Otherwise, happy with the patch. Quoting the arguments to vercmp would not hurt. Thanks, Allan > Signed-off-by: Luca Bertozzi <[email protected]> > --- > scripts/repo-add.sh.in | 19 ++++++++++++++++--- > 1 file changed, 16 insertions(+), 3 deletions(-) > > diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in > index 57413df5..f8748f08 100644 > --- a/scripts/repo-add.sh.in > +++ b/scripts/repo-add.sh.in > @@ -42,6 +42,7 @@ REPO_DB_SUFFIX= > LOCKFILE= > CLEAN_LOCK=0 > USE_COLOR='y' > +DONT_DOWNGRADE=0 > > # Import libmakepkg > source "$LIBRARY"/util/message.sh > @@ -63,6 +64,7 @@ Multiple packages to add can be specified on the command > line.\n")" > printf -- "$(gettext "Options:\n")" > printf -- "$(gettext " -n, --new only add packages > that are not already in the database\n")" > printf -- "$(gettext " -R, --remove remove old package > file from disk after updating database\n")" > + printf -- "$(gettext " --dont-downgrade do not add package to > database if a newer version is already present\n")" > elif [[ $cmd == "repo-remove" ]] ; then > printf -- "$(gettext "Usage: repo-remove [options] <path-to-db> > <packagename> ...\n")" > printf -- "\n" > @@ -248,9 +250,17 @@ db_write_entry() { > return 0 > fi > else > - if (( RMEXISTING )); then > - pkgentry=$(find_pkgentry "$pkgname") > - if [[ -n $pkgentry ]]; then > + pkgentry=$(find_pkgentry "$pkgname") > + if [[ -n $pkgentry ]]; then > + > + local version=$(sed -n '/^%VERSION%$/ {n;p;q}' > "$pkgentry/desc") > + if (( "$(vercmp $version $pkgver)" > "0" )); then > + warning "$(gettext "A newer version for '%s' is > already present in database")" "$pkgname" > + if (( DONT_DOWNGRADE )); then > + return 0 > + fi > + fi > + if (( RMEXISTING )); then > local oldfilename="$(sed -n '/^%FILENAME%$/ > {n;p;q;}' "$pkgentry/desc")" > local oldfile="$(dirname "$1")/$oldfilename" > fi > @@ -618,6 +628,9 @@ while (( $# )); do > -v|--verify) > VERIFY=1 > ;; > + --dont-downgrade) > + DONT_DOWNGRADE=1 > + ;; > *) > args+=("$1") > ;; >
