feat: Update optval()
This commit is contained in:
		@@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user