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)
+ local oldfile="$(dirname "$1")/$oldfilename" + warning "$(gettext "Removed existing file '%s'")" "$oldfilename" + rm -f $oldfile + 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
-- William Giokas | KaiSforza GnuPG Key: 0x73CD09CF Fingerprint: F73F 50EF BBE2 9846 8306 E6B8 6902 06D8 73CD 09CF