feat: Update optval()
This commit is contained in:
parent
8c8a6504e7
commit
484040ecbe
@ -63,21 +63,25 @@ EOF
|
||||
optval() {
|
||||
# GNU-style CLI options parser.
|
||||
#
|
||||
# Parse --opt VAL and --opt=VAL options.
|
||||
# Requires 2 arguments: $1, $2.
|
||||
# Set variables:
|
||||
# opt option name.
|
||||
# val option value.
|
||||
# sft value for shift.
|
||||
# Parse `--opt VAL` and `--opt=VAL` options.
|
||||
# Usage: optval "$1" "$2"
|
||||
# Sets variables:
|
||||
# opt - option name
|
||||
# val - option's value
|
||||
# sft - value for shift
|
||||
|
||||
if [[ "$1" =~ .+=.+ ]]; then
|
||||
opt="${1%%=*}"; val="${1#*=}"; sft=1
|
||||
elif [[ ! "$1" =~ .+=$ ]] && [ "$2" ] && [ "${2:0:1}" != "-" ]; then
|
||||
opt="$1"; val="$2"; sft=2
|
||||
else
|
||||
opt="$1"
|
||||
if [[ "$1" =~ .+=$ ]]; then opt="${1:0: -1}"; fi
|
||||
echo "Error: Missing argument for $opt" >&2; exit 1
|
||||
opt="${1%%=*}"; val="${1##*=}"; sft=1
|
||||
|
||||
if [ "$opt" == "$val" ]; then
|
||||
if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then
|
||||
val="$2"; sft=2
|
||||
else
|
||||
unset val
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$val" ]; then
|
||||
echo "Missing argument for option $opt" >&2; exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user