Consolodated use of 'shift' when parsing args.
This commit is contained in:
parent
1255adfdbf
commit
ca07c72934
1 changed files with 16 additions and 28 deletions
44
parse_ini
44
parse_ini
|
|
@ -7,55 +7,50 @@ parser_getopts() {
|
||||||
while [[ ! -z "$1" ]]; do
|
while [[ ! -z "$1" ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-b|-bound|--bound)
|
-b|-bound|--bound)
|
||||||
shift
|
if [[ -z "$2" ]]; then
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
echo "${0##*/}: bound (-b) cannot be an empty value" >&2
|
echo "${0##*/}: bound (-b) cannot be an empty value" >&2
|
||||||
return 1
|
return 1
|
||||||
elif ((${#1} > 1)); then
|
elif ((${#2} > 1)); then
|
||||||
echo "${0##*/}: bound (-b) must be a single character" >&2
|
echo "${0##*/}: bound (-b) must be a single character" >&2
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
KEYVALUE_DELIM="$1"
|
KEYVALUE_DELIM="$2"
|
||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
-d|-delim|--delim)
|
-d|-delim|--delim)
|
||||||
shift
|
if [[ -z "$2" ]]; then
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
VARIABLE_DELIM=""
|
VARIABLE_DELIM=""
|
||||||
DELIM_SET=1
|
DELIM_SET=1
|
||||||
elif [[ -z "$VARIABLE_PREFIX" ]] && [[ "${1:0:1}" =~ [[:digit:]] ]]; then
|
elif [[ -z "$VARIABLE_PREFIX" ]] && [[ "${2:0:1}" =~ [[:digit:]] ]]; then
|
||||||
echo "${0##*/}: delim (-d) cannot begin with a number when prefix (-p) is empty" >&2
|
echo "${0##*/}: delim (-d) cannot begin with a number when prefix (-p) is empty" >&2
|
||||||
return 1
|
return 1
|
||||||
elif [[ "$1" =~ [^[:alnum:]_] ]]; then
|
elif [[ "$2" =~ [^[:alnum:]_] ]]; then
|
||||||
echo "${0##*/}: invalid characters in delim (-d) - alphanumerics and _ only" >&2
|
echo "${0##*/}: invalid characters in delim (-d) - alphanumerics and _ only" >&2
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
VARIABLE_DELIM="$1"
|
VARIABLE_DELIM="$2"
|
||||||
DELIM_SET=1
|
DELIM_SET=1
|
||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
-duplicates-merge|--duplicates-merge)
|
-duplicates-merge|--duplicates-merge)
|
||||||
shift
|
|
||||||
DUPLICATES_MERGE=1
|
DUPLICATES_MERGE=1
|
||||||
;;
|
;;
|
||||||
-e|-export|--export)
|
-e|-export|--export)
|
||||||
shift
|
|
||||||
DECLARE_SCOPE="-x"
|
DECLARE_SCOPE="-x"
|
||||||
;;
|
;;
|
||||||
-global-name|--global-name)
|
-global-name|--global-name)
|
||||||
shift
|
if [[ -z "$2" ]]; then
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
echo "${0##*/}: global name (--global-name) cannot be an empty value" >&2
|
echo "${0##*/}: global name (--global-name) cannot be an empty value" >&2
|
||||||
return 1
|
return 1
|
||||||
elif [[ "${1:0:1}" =~ [[:digit:]] ]]; then
|
elif [[ "${2:0:1}" =~ [[:digit:]] ]]; then
|
||||||
echo "${0##*/}: global name (--global-name) cannot begin with a number" >&2
|
echo "${0##*/}: global name (--global-name) cannot begin with a number" >&2
|
||||||
return 1
|
return 1
|
||||||
elif [[ "$1" =~ [^[:alnum:]_] ]]; then
|
elif [[ "$2" =~ [^[:alnum:]_] ]]; then
|
||||||
echo "${0##*/}: only alphanumerics and _ allowed for global name (--global-name)" >&2
|
echo "${0##*/}: only alphanumerics and _ allowed for global name (--global-name)" >&2
|
||||||
else
|
else
|
||||||
CURRENT_SECTION="$1"
|
CURRENT_SECTION="$2"
|
||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
@ -64,24 +59,19 @@ parser_getopts() {
|
||||||
return 2
|
return 2
|
||||||
;;
|
;;
|
||||||
-l|-local|--local)
|
-l|-local|--local)
|
||||||
shift
|
|
||||||
DECLARE_SCOPE="-l"
|
DECLARE_SCOPE="-l"
|
||||||
;;
|
;;
|
||||||
-lowercase|--lowercase)
|
-lowercase|--lowercase)
|
||||||
shift
|
|
||||||
CONVERT_CASE="-1"
|
CONVERT_CASE="-1"
|
||||||
;;
|
;;
|
||||||
-no-booleans|--no-booleans)
|
-no-booleans|--no-booleans)
|
||||||
shift
|
|
||||||
USE_BOOLEANS="0"
|
USE_BOOLEANS="0"
|
||||||
;;
|
;;
|
||||||
-no-squash|--no-squash)
|
-no-squash|--no-squash)
|
||||||
shift
|
|
||||||
SQUASH_SPACES=0
|
SQUASH_SPACES=0
|
||||||
;;
|
;;
|
||||||
-p|-prefix|--prefix)
|
-p|-prefix|--prefix)
|
||||||
shift
|
if [[ -z "$2" ]]; then
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
if [[ "${VARIABLE_DELIM:0:1}" =~ [[:digit:]] ]]; then
|
if [[ "${VARIABLE_DELIM:0:1}" =~ [[:digit:]] ]]; then
|
||||||
echo "${0##*/}: prefix (-p) cannot be empty if delim (-d) begins with a number" >&2
|
echo "${0##*/}: prefix (-p) cannot be empty if delim (-d) begins with a number" >&2
|
||||||
return 1
|
return 1
|
||||||
|
|
@ -91,27 +81,24 @@ parser_getopts() {
|
||||||
VARIABLE_DELIM=""
|
VARIABLE_DELIM=""
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
elif [[ "${1:0:1}" =~ [[:digit:]] ]]; then
|
elif [[ "${2:0:1}" =~ [[:digit:]] ]]; then
|
||||||
echo "${0##*/}: prefix (-p) cannot begin with a number" >&2
|
echo "${0##*/}: prefix (-p) cannot begin with a number" >&2
|
||||||
return 1
|
return 1
|
||||||
elif [[ "$1" =~ [^[:alnum:]_] ]]; then
|
elif [[ "$2" =~ [^[:alnum:]_] ]]; then
|
||||||
echo "${0##*/}: only alphanumerics and _ allowed for prefix (-p)" >&2
|
echo "${0##*/}: only alphanumerics and _ allowed for prefix (-p)" >&2
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
VARIABLE_PREFIX="$1"
|
VARIABLE_PREFIX="$2"
|
||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
-repeat-sections|--repeat-sections)
|
-repeat-sections|--repeat-sections)
|
||||||
shift
|
|
||||||
REPEAT_SECTIONS="1"
|
REPEAT_SECTIONS="1"
|
||||||
;;
|
;;
|
||||||
-textual-booleans|--textual-booleans)
|
-textual-booleans|--textual-booleans)
|
||||||
shift
|
|
||||||
TEXTUAL_BOOLEANS="1"
|
TEXTUAL_BOOLEANS="1"
|
||||||
;;
|
;;
|
||||||
-uppercase|--uppercase)
|
-uppercase|--uppercase)
|
||||||
shift
|
|
||||||
CONVERT_CASE="1"
|
CONVERT_CASE="1"
|
||||||
;;
|
;;
|
||||||
-v|-version|--version)
|
-v|-version|--version)
|
||||||
|
|
@ -129,6 +116,7 @@ parser_getopts() {
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
# Make sure we have an INI file after all the options are removed.
|
# Make sure we have an INI file after all the options are removed.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue