diff --git a/bin/miaou-bash b/bin/miaou-bash index bd1b13e..9c414c2 100755 --- a/bin/miaou-bash +++ b/bin/miaou-bash @@ -81,7 +81,6 @@ function on_return { print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" "${failure_payload}" miaou_debug "" fi - true } # overridden function which permits backtracing of the original `exit` statement @@ -568,7 +567,7 @@ function on_exit { if ! is_true $CHILD_PROCESS; then 2>&3 >&3 dump_stderr - if [[ -v failure_type ]]; then + if [[ -v failure_type && $failure_code -gt 0 ]]; then 2>&3 >&4 dump_failure if [[ -v error_source ]]; then 2>&3 >&4 dump_stacktrace diff --git a/etc/vim/vimrc.local b/etc/vim/vimrc.local index c5bb3c9..ffc4d38 100644 --- a/etc/vim/vimrc.local +++ b/etc/vim/vimrc.local @@ -1,4 +1,4 @@ -let additionals = [ "core", "miaou", "rookie", "azerty" ] +let additionals = [ "core", "miaou", "rookie" ] for additional in additionals let s:vimrc_path = "/etc/vim/vimrc." . additional if filereadable(s:vimrc_path) diff --git a/install.sh b/install.sh index 8d5518b..3996a49 100755 --- a/install.sh +++ b/install.sh @@ -32,9 +32,9 @@ function bootstrap { [[ "$UID" -ne 0 ]] && echo 'root privilege required' && exit 1 if [[ -v MIAOU_BASH_DIR ]]; then - miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" + . bin/miaou-bash "$MIAOU_BASH_DIR/lib/self-upgrade.bash" else bootstrap - miaou-bash "$MIAOU_BASH_DIR/lib/init.bash" + . bin/miaou-bash "$MIAOU_BASH_DIR/lib/init.bash" echo "miaou-bash successfully installed" fi diff --git a/lib/init.bash b/lib/init.bash index b5e47bf..b32fc48 100755 --- a/lib/init.bash +++ b/lib/init.bash @@ -2,6 +2,16 @@ # CONSTANTS +readonly AZERTY_ZONES=( + 'Europe/Paris' + 'Indian/Reunion2' + 'Indian/Mayotte' + 'America/Cayenne' + 'America/Guadeloupe' + 'America/Martinique' + 'Pacific/Noumea' + 'Pacific/Tahiti' +) readonly REQUIRED_PKGS=(file jq vim git) readonly BACKUP='ORIGINAL' @@ -38,20 +48,41 @@ function link_etc { fi } -function predefine_config_files { +function link_config_files { link_etc bash.bashrc link_etc inputrc - link_etc vimrc.azerty vim link_etc vimrc.core vim link_etc vimrc.local vim link_etc vimrc.miaou vim link_etc vimrc.rookie vim } +function in_azerty_zone { + local zone + zone=$(readlink /etc/localtime) + zone="${zone#/usr/share/zoneinfo/}" # remove prefix + for i in "${AZERTY_ZONES[@]}"; do + [[ "$zone" == "$i" ]] && return 0 + done + return 1 +} + +function link_azerty { + if in_azerty_zone; then + echo "AZERTY zone" + else + echo "NO AZERTY" + fi + echo COUCOU + # link_etc vimrc.azerty vim + # . "$MIAOU_BASH_DIR"/tools/smart_write 'let additionals = .*' 'let additionals = [ "core", "miaou", "rookie", "azerty" ]' /etc/vim/vimrc.local +} + # MAIN [ "$UID" -ne 0 ] && echo 'root privilege required' && exit 1 source "$MIAOU_BASH_DIR/lib/functions.bash" required_packages no_more_skeleton -predefine_config_files +link_config_files +link_azerty diff --git a/test/miaou-bash.test.bash b/test/miaou-bash.test.bash index 8935d63..7dc88a5 100755 --- a/test/miaou-bash.test.bash +++ b/test/miaou-bash.test.bash @@ -119,6 +119,7 @@ TIMEFORMAT=$'\nelapsed: %Rs' time { assert success assert exit_0 + assert return_conditional assert_grep success_with_args 'count args: 2' -- 'A B' C fail_type subshell_term SUBSHELL_ERROR diff --git a/test/stub/scenario.bash b/test/stub/scenario.bash index 58473cd..760721d 100755 --- a/test/stub/scenario.bash +++ b/test/stub/scenario.bash @@ -58,6 +58,15 @@ function do_return { should_return } +function do_return_conditional { + if call_function_which_will_return; then + echo SHOULD NOT APPEAR + else + echo return is: $? + fi + echo SUCCESS +} + function do_unbound_associative { declare -A associative associative['A']='Abc' diff --git a/tools/smart_write b/tools/smart_write new file mode 100755 index 0000000..6f45616 --- /dev/null +++ b/tools/smart_write @@ -0,0 +1,19 @@ +#!/usr/bin/env miaou-bash + +function usage { + builtin echo "Usage: $(basename "$0") " +} + +[[ $# -ne 3 ]] && usage && exit 2 + +REGEX=$1 +STRING=$2 +FILE=$3 + +if ! grep -Pq "$REGEX" "$FILE"; then + builtin echo -e "$STRING" >>"$FILE" + echo 'appended' +else + sed -Ei "s|$REGEX|$STRING|g" "$FILE" + echo 'replaced' +fi