| #!/bin/bash |
| ## ----------------------------------------------------------------------- |
| ## Intent: getopts parsing and set flag status for --is-empty swtiches |
| ## ----------------------------------------------------------------------- |
| |
| ## ----------------------------------------------------------------------- |
| ## Intent: Parse command line switch, when *-empty detected take action |
| ## - remove is-empty OR is-not-empty from swtich string |
| ## - set values in map %attrs=() to capture detection bits |
| ## Return: |
| ## %attrs |
| ## --is-empty empty=true |
| ## --is-not-empty empty=true, not=true |
| ## ----------------------------------------------------------------------- |
| function getopts_switch__empty() |
| { |
| local -n gse_arg=$1; shift |
| declare -g -A attrs |
| |
| case "$gse_arg" in |
| *'-is-empty') |
| is_switch_valid__is_empty "$gse_arg" |
| attrs['empty']=1 |
| # declare -g -i argv_is_empty=1 |
| gse_arg="${gse_arg/-is-empty/}" |
| local -i rc=0 |
| ;; |
| *) local -i rc=1 ;; |
| esac |
| |
| [[ $rc -eq 0 ]] && { true; } || { false; } |
| return |
| } |
| |
| ## ----------------------------------------------------------------------- |
| ## Intent: Define flags based on detected switch modifiers |
| ## ----------------------------------------------------------------------- |
| function gen_attrs__empty() |
| { |
| local switch="$1"; shift |
| declare -g attrs |
| |
| local is="${switch}_is_empty" |
| local not="${switch}_not_empty" |
| declare -g -i "$is" |
| declare -g -i "$not" |
| |
| ## Clear prior state |
| [[ -v "$is" ]] && { echo "IS"; unset "$is"; } |
| [[ -v "$not" ]] && { echo "NOT"; unset "$not"; } |
| |
| ## Apply current attributes |
| ## [TODO] parameterize flag creation |
| if [[ ! -v attrs['empty'] ]]; then |
| : # fall through |
| elif [[ -v attrs['not'] ]]; then |
| declare -g -i $not=1 |
| else |
| declare -g -i $is=1 |
| fi |
| |
| : # assign ($?==0) |
| return |
| } |
| |
| |
| # [EOF] |