#!/usr/bin/env miaou-bash # CONSTANTS BASEDIR=$(dirname "$0") readonly BASEDIR # SCENARII function do_subshell_term { # grep nope nope echo "found=$(command_not_found)" echo "found=$(grep nope nope)" command_not_found } function do_last_false { # FIXME: provides error detection ! true } function do_unbound_associative { declare -A associative associative['A']='Abc' # this is fine [[ -v associative['A'] ]] && echo "${associative['A']}" [[ -v associative['B'] ]] && echo "${associative['B']}" # this fails echo "${associative['B']}" } function do_false { echo before false false echo after false } function do_success { echo -n 'SUCCESS args=[' ( IFS=',' echo -n "$*" ) echo ']' source "${MIAOU_BASH_DIR}/lib/ansi.bash" local content content=$(PADDING_LEFT=2 PADDING_RIGHT=6 style_padding 'this is success') content=$(FG=YELLOW BG=BLUE style_ansi "$content") FG=BLACK BG=RED PADDING=8 style_block "$content" } function do_unbound_variable { a=5 echo "a=${a}" echo "b=${b}" } # FUNCTIONS function F2 { echo "stdout A" # echo toto >>/tmp/toto return >&2 echo "This is stderr" blabla $nope exit 6 grep titi toto echo "stdout B" echo "stdout C" # command_not_found } function F1 { echo F1 F2 } function main { F1 F3 echo before subshell echo "here in subshell $(grep titi $0)" echo NO MORE result=$(grep titi $0) [[ "$result" -ne 0 ]] && echo true # grep titi nope >&2 echo some trace in stderr1 "$BASEDIR/extra/library.bash" . "$BASEDIR/lib/utility.bash" # . not_found/not_found.bash # echo "here in subshell $(grep titi nope)" # ls -l nope >&2 echo some trace in stderr2 } function F3 { echo F3 return 0 } function usage { introspect_scenarii ( IFS='|' echo "USAGE: $0 <${SCENARII[*]}>" ) echo -e "\trun case scenario which performs various bash statements and mostly fails" echo -e "\tthese case scenarii helps testing the miaou-bash script" } function introspect_scenarii { mapfile -t SCENARII <<<"$(compgen -A function | grep ^do_ | sed 's/...//')" } function test_contain_item { local -n array=$1 for item in "${array[@]}"; do [[ "$item" == "$2" ]] && return 0; done return 1 } # MAIN [[ $# -eq 0 ]] && >&2 echo 'arg1 expected!' && usage && exit 1 scenario="$1" introspect_scenarii if test_contain_item SCENARII "$scenario"; then shift "do_${scenario}" "$@" else (>&2 echo "scenario <${scenario}> not found!" && usage && exit 2) fi