From c9bbf90f0a0c78707b6b50dc1cb5ed7e2633c932 Mon Sep 17 00:00:00 2001 From: Nikolaos Kakouros Date: Wed, 21 Nov 2018 00:15:50 +0100 Subject: [PATCH] Allows users to declare custom aliases --- go-core.bash | 6 +++++- libexec/aliases | 4 ++++ tests/aliases.bats | 23 +++++++++++++++++------ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/go-core.bash b/go-core.bash index 898e3c2..47f9309 100755 --- a/go-core.bash +++ b/go-core.bash @@ -319,7 +319,11 @@ declare _GO_INJECT_MODULE_PATH="$_GO_INJECT_MODULE_PATH" esac if _@go.source_builtin 'aliases' --exists "$cmd"; then - eval "$cmd" "$@" + if [[ " ${GO_ALIAS_EXPAND_CMDS[*]} " == *" $cmd " ]]; then + eval "$cmd" "$@" + else + "$cmd" "$@" + fi return fi diff --git a/libexec/aliases b/libexec/aliases index b28718d..3fd8795 100755 --- a/libexec/aliases +++ b/libexec/aliases @@ -28,6 +28,10 @@ if [[ "${GO_ALIAS_CMDS_EXTRA[*]}" != '' ]]; then _GO_ALIAS_CMDS+=( "${GO_ALIAS_CMDS_EXTRA[@]}" ) fi +if [[ "${GO_ALIAS_EXPAND_CMDS[*]}" != '' ]]; then + _GO_ALIAS_CMDS+=( "${GO_ALIAS_EXPAND_CMDS[@]}" ) +fi + readonly _GO_ALIAS_CMDS _@go.aliases() { diff --git a/tests/aliases.bats b/tests/aliases.bats index 2c14a59..0a31dde 100644 --- a/tests/aliases.bats +++ b/tests/aliases.bats @@ -5,10 +5,13 @@ load environment create_aliases_test_command_script() { @go.create_test_go_script \ 'declare -a GO_ALIAS_CMDS_EXTRA=("nvim")' \ - "@go $@" + 'declare -a GO_ALIAS_EXPAND_CMDS=("test_echo")' \ + 'shopt -s expand_aliases' \ + 'alias test_echo="echo -n test_string_19098e09818fad"' \ + "@go \$@" } -@test "$SUITE: with no arguments, list all aliases" { +@test "$SUITE: with no arguments, list all predefined aliases" { run ./go aliases assert_success assert_line_equals 0 'awk' # first alias @@ -16,11 +19,19 @@ create_aliases_test_command_script() { } @test "$SUITE: list custom aliases if defined" { - create_aliases_test_command_script 'aliases' - run "$TEST_GO_SCRIPT" aliases + create_aliases_test_command_script + run "$TEST_GO_SCRIPT" 'aliases' assert_success assert_line_equals 0 'awk' # first alias - assert_line_equals -1 'nvim' # last alias + assert_line_equals -2 'nvim' # second to last alias + assert_line_equals -1 'test_echo' # last alias +} + +@test "$SUITE: run expanded aliases if defined" { + create_aliases_test_command_script 'aliases' + run "$TEST_GO_SCRIPT" 'test_echo' + assert_success + assert_line_equals 0 'test_string_19098e09818fad' } @test "$SUITE: tab completions" { @@ -112,7 +123,7 @@ create_aliases_test_command_script() { @test "$SUITE: leave help generic for cd, pushd when using env function" { # Setting _GO_CMD will trick the script into thinking the shell function is # running it. - + _GO_CMD='test-go' run ./go aliases --help cd [ "$status" -eq '0' ]