summaryrefslogtreecommitdiffstats
path: root/scripts/library/README
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2012-04-08 18:32:17 +0200
committerDan McGee <dan@archlinux.org>2012-04-24 15:38:36 +0200
commit8679cd68d825bfe28ba0c833494c415bcfa6d8f6 (patch)
tree2da70a05c56a457262a4ff68446c788d3829131b /scripts/library/README
parent1eb6a9cbfef4f0ad5151b4850d81141b7a535be6 (diff)
downloadpacman-8679cd68d825bfe28ba0c833494c415bcfa6d8f6.tar.gz
pacman-8679cd68d825bfe28ba0c833494c415bcfa6d8f6.tar.xz
scripts/library: introduce parseopts
This will replace our current options parser used in pacman-key, makepkg, and ideally elsewhere. It follows heuristics closer to that of GNU getopt long (and thus pacman itself), with the exception that it does not allow for options with optional arguments. Due to the way this parser will be used, this sort of functionality will not be needed. Instead of relying on eval+set, options are normalized into an array, OPTRET, which callers should expect to be populated after returning from parseopts. This avoids problems with quotes and spaces in arguments, assuming that the user quotes properly when passing into the application. A new test harness for parseopts is added in test/scripts. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Diffstat (limited to 'scripts/library/README')
-rw-r--r--scripts/library/README20
1 files changed, 20 insertions, 0 deletions
diff --git a/scripts/library/README b/scripts/library/README
index 1e9c962b..f43873f3 100644
--- a/scripts/library/README
+++ b/scripts/library/README
@@ -13,3 +13,23 @@ A getopt replacement to avoids portability issues, in particular the
lack of long option name support in the default getopt provided by some
platforms.
Usage: parse_option $SHORT_OPTS $LONG_OPTS "$@"
+
+parseopts.sh:
+A getopt_long-like parser which portably supports longopts and shortopts
+with some GNU extensions. It does not allow for options with optional
+arguments. For both short and long opts, options requiring an argument
+should be suffixed with a colon. After the first argument containing
+the short opts, any number of valid long opts may be be passed. The end
+of the options delimiter must then be added, followed by the user arguments
+to the calling program.
+
+Reccommended Usage:
+ OPT_SHORT='fb:z'
+ OPT_LONG=('foo' 'bar:' 'baz')
+ if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
+ exit 1
+ fi
+ set -- "${OPTRET[@]}"
+Returns:
+ 0: parse success
+ 1: parse failure (error message supplied)