#!/usr/bin/env bash set -euo pipefail MAIN_DIR=$(realpath -e "$(dirname "$0")") # shellcheck disable=1091 source "$MAIN_DIR/vendor/std/src/lib.sh" source "$MAIN_DIR/src/lib.sh" declare -A clap__flags=( [-h]=bool [-v]=value ["--long-flag"]=value ["--long-bool-flag"]=bool ) # formatter doesn't like these unquoted and zsh doesn't like quotes on # associative arrays declare __long_flag=--long-flag declare __long_bool_flag=--long-bool-flag eval "$(std::sensible)" clap::parse a b c std::assert-eq "should have parsed 3 args" 3 "${#clap__arguments[@]}" clap::parse a b -h c std::assert-eq "should have parsed 3 args" 3 "${#clap__arguments[@]}" clap::parse -h std::assert-eq "should have parsed 1 flag" 1 "${#clap__options[@]}" std::assert-eq "should have parsed 0 args" 0 "${#clap__arguments[@]}" clap::parse -- -h std::assert-eq "should have parsed 0 flags" 0 "${#clap__options[@]}" std::assert-eq "should have parsed 1 arg" 1 "${#clap__arguments[@]}" clap::parse -- -- std::assert-eq "should have parsed 0 flags" 0 "${#clap__options[@]}" std::assert-eq "should have parsed 1 arg" 1 "${#clap__arguments[@]}" std::assert "1st arg should be '--'" "${clap__arguments[0]}" "==" "--" # shellcheck disable=2251 ! clap::parse --long-flagarg &>/dev/null # shellcheck disable=2251 ! clap::parse --long-flagh &>/dev/null clap::parse --long-flag arg std::assert-eq "should have parsed 0 args" 0 "${#clap__arguments[@]}" std::assert "'--long-flag' should be set" "${clap__options[$__long_flag]}" "==" arg clap::parse --long-bool-flag arg std::assert-eq "should have parsed 1 args" 1 "${#clap__arguments[@]}" std::assert-eq "'--long-bool-flag' should be set" 1 "${clap__options[$__long_bool_flag]}" declare -a clap__help_commands=() declare -a clap__help_options=() # --- OUTPUT 1 std::assert "reviewed clap output 1 must match" "$( clap::pretty-help "This help is empty" | xxd -p )" == "$(xxd -p " "[ARGUMENTS...]" | xxd -p )" == "$(xxd -p " "[ARGUMENTS...]" | xxd -p )" == "$(xxd -p " "[ARGUMENTS...]" | xxd -p )" == "$(xxd -p " "[ARGUMENTS...]" | xxd -p )" == "$(xxd -p