[pacman-dev] [PATCH 3/3] parse_options: accept multiple arguments
Allan McRae
allan at archlinux.org
Tue Jul 5 07:51:31 EDT 2011
Allow command-line options to accept multiple arguments without
additional quoting by taking the list of arguments until one
starting with a "-" is reached.
The only current use of this is the --pkg option in makepkg. This
allows (e.g.)
makepkg --pkg foo bar
and packages "foo" and "bar" will be built.
Signed-off-by: Allan McRae <allan at archlinux.org>
---
scripts/library/parse_options.sh | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/scripts/library/parse_options.sh b/scripts/library/parse_options.sh
index 49cbb60..a2f9c1b 100644
--- a/scripts/library/parse_options.sh
+++ b/scripts/library/parse_options.sh
@@ -28,7 +28,12 @@ parse_options() {
if [[ -n $2 ]]; then
printf ' %s' "$1"
shift
- printf " '%s'" "$1"
+ local arguments="$1"
+ while [[ -n $2 && ${2:0:1} != "-" ]]; do
+ shift
+ arguments+=" $1"
+ done
+ printf " '%s'" "$arguments"
else
printf "@SCRIPTNAME@: $(gettext "option %s requires an argument\n")" "'$1'" >&2
ret=1
@@ -56,12 +61,22 @@ parse_options() {
else
if [[ -n ${1:$i+1} ]]; then
printf ' -%s' "${1:i:1}"
- printf " '%s'" "${1:$i+1}"
+ local arguments="${1:$i+1}"
+ while [[ -n $2 && ${2:0:1} != "-" ]]; do
+ shift
+ arguments+=" $1"
+ done
+ printf " '%s'" "$arguments"
else
if [[ -n $2 ]]; then
printf ' -%s' "${1:i:1}"
shift
- printf " '%s'" "${1}"
+ local arguments="$1"
+ while [[ -n $2 && ${2:0:1} != "-" ]]; do
+ shift
+ arguments+=" $1"
+ done
+ printf " '%s'" "$arguments"
else
printf "@SCRIPTNAME@: $(gettext "option %s requires an argument\n")" "'-${1:i:1}'" >&2
ret=1
--
1.7.6
More information about the pacman-dev
mailing list