On 30/05/13 12:13, William Giokas wrote:
On Thu, May 30, 2013 at 10:11:49AM +1000, Phillip Smith wrote:
From: Phillip Smith <fukawi2@gmail.com>
when maintaining a custom repo, often it is undesirable to retain older versions of packages. this patch adds the --remove option to remove the current package file from disk before adding the new one to the database.
Signed-off-by: Phillip Smith <fukawi2@gmail.com> --- scripts/repo-add.sh.in | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 4470dd0..2fdb165 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -31,6 +31,7 @@ declare -r confdir='@sysconfdir@' QUIET=0 DELTA=0 ONLYADDNEW=0 +RMEXISTING=0 WITHFILES=0 SIGN=0 VERIFY=0 @@ -58,6 +59,7 @@ Multiple packages to add can be specified on the command line.\n")" printf -- "$(gettext "Options:\n")" printf -- "$(gettext " -d, --delta generate and add delta for package update\n")" printf -- "$(gettext " -n, --new only add packages that are not already in the database\n")" + printf -- "$(gettext " -R, --remove remove any existing packages with the same name (eg, an older version)\n")" printf -- "$(gettext " -f, --files update database's file list\n")" elif [[ $cmd == "repo-remove" ]] ; then printf -- "$(gettext "Usage: repo-remove [options] <path-to-db> <packagename|delta> ...\n")" @@ -304,6 +306,15 @@ db_write_entry() { local oldfilename=$(grep -A1 FILENAME "$pkgentry/desc" | tail -n1) local oldfile="$(dirname "$1")/$oldfilename" fi + elif (( RMEXISTING )); then + # only remove existing package if we're not doing deltas + pkgentry=$(find_pkgentry "$pkgname") + if [[ -n $pkgentry ]]; then + local oldfilename=$(grep -A1 FILENAME "$pkgentry/desc" | tail -n1)
Just one thing. Replace this with:
local oldfilename="$(awk '/%FILENAME%/ {getline; print}')"
Yeah, the quotes aren't that important, but this way you save spawning a tail process when you could just do it with this. (I just had to do this to get pkgbase entries from db's in one of my pet scripts, so yeah)
Note that line is cpoy-paste from just above. My bet is a bunch of such improvements could be made.
+ local oldfile="$(dirname "$1")/$oldfilename" + warning "$(gettext "Removed existing file '%s'")" "$oldfilename" + rm -f $oldfile
Remember the .sig file too!
+ fi fi fi
@@ -611,6 +622,7 @@ while (( $# )); do -q|--quiet) QUIET=1;; -d|--delta) DELTA=1;; -n|--new) ONLYADDNEW=1;; + -R|--remove) RMEXISTING=1;; -f|--files) WITHFILES=1;; --nocolor) USE_COLOR='n';; -s|--sign) -- 1.8.2.3