summaryrefslogtreecommitdiffstats
path: root/scripts/repo-add.sh.in
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2011-06-22 22:26:55 +0200
committerDave Reisner <dreisner@archlinux.org>2011-06-27 19:39:02 +0200
commit122b4c218785a89dcf6e1a335f6083aa166d4cdb (patch)
treea861053a34a5d975ce2894d8ec12986e5d581898 /scripts/repo-add.sh.in
parent6f5a90edb39cdd7e5e3faa7acdbaad288876f9da (diff)
downloadpacman-122b4c218785a89dcf6e1a335f6083aa166d4cdb.tar.gz
pacman-122b4c218785a89dcf6e1a335f6083aa166d4cdb.tar.xz
repo-add: move command invocation out of arg parsing loop
Signed-off-by: Dave Reisner <d@falconindy.com>
Diffstat (limited to 'scripts/repo-add.sh.in')
-rw-r--r--scripts/repo-add.sh.in25
1 files changed, 14 insertions, 11 deletions
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index e7a4be40..6d09f0a3 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -531,9 +531,10 @@ trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT
trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT
trap 'trap_exit "$(gettext "An unknown error has occured. Exiting...")"' ERR
+declare -a args
success=0
# parse arguments
-while [[ $# > 0 ]]; do
+while (( $# )); do
case "$1" in
-q|--quiet) QUIET=1;;
-d|--delta) DELTA=1;;
@@ -564,21 +565,23 @@ while [[ $# > 0 ]]; do
VERIFY=1
;;
*)
- if [[ -z $REPO_DB_FILE ]]; then
- REPO_DB_FILE="$1"
- LOCKFILE="$REPO_DB_FILE.lck"
- check_repo_db
- else
- case "$cmd" in
- repo-add) add $1 && success=1 ;;
- repo-remove) remove $1 && success=1 ;;
- esac
- fi
+ args+=("$1")
;;
esac
shift
done
+REPO_DB_FILE=${args[0]}
+LOCKFILE=$REPO_DB_FILE.lck
+check_repo_db
+
+for arg in "${args[@]:1}"; do
+ case "$cmd" in
+ repo-add) add "$arg" ;;
+ repo-remove) remove "$arg" ;;
+ esac && success=1
+done
+
# if at least one operation was a success, re-zip database
if (( success )); then
msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE"