On Thu, May 30, 2013 at 10:11:49AM +1000, Phillip Smith wrote:
> From: Phillip Smith <[email protected]>
> 
> 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 <[email protected]>
> ---
>  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

Attachment: pgptZsKF1Iy1Q.pgp
Description: PGP signature



Reply via email to