Added long opt parsing, now understands -- and parses non-option elements into cmdarg_argv. Docs updated.

This commit is contained in:
2013-11-13 11:14:09 -08:00
parent f95d181b6d
commit 77698f430c
5 changed files with 155 additions and 10 deletions

37
tests/test_dashdash.sh Normal file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/bash4
source $(dirname ${BASH_SOURCE[0]})/../cmdarg.sh
function shunittest_dashdash
{
set -x
cmdarg_purge
cmdarg_parse -- lolzors something
[[ "${cmdarg_argv[0]}" == "lolzors" ]] || return 1
[[ "${cmdarg_argv[1]}" == "something" ]] || return 1
}
function shunittest_missing_dashdash
{
set -x
cmdarg_purge
( cmdarg_parse --lolzors ) || return 0
return 1
}
function shunittest_withbool_missing_dashdash
{
set -x
cmdarg_purge
cmdarg 'x' 'xray' 'thingy for xray'
( cmdarg_parse -x lolzors ) || return 0
cmdarg_parse -x -- lolzors
}
function shunittest_withopt_with_dashdash
{
set -x
cmdarg_purge
cmdarg 'x:' 'xray' 'thingy for xray'
( cmdarg_parse -x -- lolzors ) || return 0
}

31
tests/test_longopt.sh Normal file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/bash4
source $(dirname ${BASH_SOURCE[0]})/../cmdarg.sh
function shunittest_longopt
{
cmdarg_purge
cmdarg 'l:' 'long-required-opt' 'Some long opt that requires a value'
cmdarg 'o' 'long-boolean-opt' 'Some long option that is boolean'
cmdarg 'L:' 'long-required-default-opt' 'Some long opt that requires a value but has a default' '(nil)'
cmdarg_parse --long-required-opt hooha --long-boolean-opt
[[ "${cmdarg_cfg['long-required-opt']}" == "hooha" ]] || return 1
[[ "${cmdarg_cfg['long-boolean-opt']}" == "true" ]] || return 1
[[ "${cmdarg_cfg['long-required-default-opt']}" == "(nil)" ]] || return 1
}
function shunittest_longopt_shortopts_still_work
{
cmdarg_purge
cmdarg 'l:' 'long-required-opt' 'Some long opt that requires a value'
cmdarg 'o' 'long-boolean-opt' 'Some long option that is boolean'
cmdarg 'L:' 'long-required-default-opt' 'Some long opt that requires a value but has a default' '(nil)'
cmdarg_parse -l hooha -o
[[ "${cmdarg_cfg['long-required-opt']}" == "hooha" ]] || return 1
[[ "${cmdarg_cfg['long-boolean-opt']}" == "true" ]] || return 1
[[ "${cmdarg_cfg['long-required-default-opt']}" == "(nil)" ]] || return 1
}

View File

@@ -64,7 +64,7 @@ function shunittest_hash_values
do
cmp="$cmp ${k}=${hash[$k]}"
done
cmp=$(echo "$cmp" | sed s/'^\s*'//)
cmp=$(echo "$cmp" | sed s/'^ *'//)
if [[ "$cmp" != "$base" ]]; then
echo "Hash does not contain expected arguments ($cmp vs $base)"
cmdarg_dump >&2