diff --git a/completion/available/bash-it.completion.bash b/completion/available/bash-it.completion.bash index e59b3fb1..20a94e5b 100644 --- a/completion/available/bash-it.completion.bash +++ b/completion/available/bash-it.completion.bash @@ -65,7 +65,7 @@ _bash-it-comp() prev="${COMP_WORDS[COMP_CWORD-1]}" chose_opt="${COMP_WORDS[1]}" file_type="${COMP_WORDS[2]}" - opts="disable enable help migrate search show update" + opts="disable enable help migrate search show update version" case "${chose_opt}" in show) local show_args="aliases completions plugins" @@ -82,7 +82,7 @@ _bash-it-comp() return 0 fi ;; - update | search | migrate) + update | search | migrate | version) return 0 ;; enable | disable) diff --git a/lib/helpers.bash b/lib/helpers.bash index 902e6a2b..81f7280b 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -61,7 +61,7 @@ function reload_plugins() { bash-it () { about 'Bash-it help and maintenance' - param '1: verb [one of: help | show | enable | disable | migrateĀ | update | search ] ' + param '1: verb [one of: help | show | enable | disable | migrateĀ | update | search | version ] ' param '2: component type [one of: alias(es) | completion(s) | plugin(s) ] or search term(s)' param '3: specific component [optional]' example '$ bash-it show plugins' @@ -71,6 +71,7 @@ bash-it () example '$ bash-it migrate' example '$ bash-it update' example '$ bash-it search ruby [[-]rake]... [--enable | --disable]' + example '$ bash-it version' typeset verb=${1:-} shift typeset component=${1:-} @@ -90,8 +91,10 @@ bash-it () return;; update) func=_bash-it_update;; - migrate) + migrate) func=_bash-it-migrate;; + version) + func=_bash-it-version;; *) reference bash-it return;; @@ -227,6 +230,28 @@ _bash-it-migrate() { fi } +_bash-it-version() { + _about 'shows current Bash-it version' + _group 'lib' + + cd "${BASH_IT}" || return + + if [ -z $BASH_IT_REMOTE ]; then + BASH_IT_REMOTE="origin" + fi + + BASH_IT_GIT_REMOTE=$(git remote get-url $BASH_IT_REMOTE) + BASH_IT_GIT_URL=${BASH_IT_GIT_REMOTE%.git} + + BASH_IT_GIT_VERSION_INFO="$(git log --pretty=format:'%h on %aI' -n 1)" + BASH_IT_GIT_SHA=${BASH_IT_GIT_VERSION_INFO%% *} + + echo "Current git SHA: $BASH_IT_GIT_VERSION_INFO" + echo "$BASH_IT_GIT_URL/commit/$BASH_IT_GIT_SHA" + + cd - &> /dev/null || return +} + _bash-it-describe () { _about 'summarizes available bash_it components' diff --git a/test/completion/bash-it.completion.bats b/test/completion/bash-it.completion.bats index e2f1f415..eb77edae 100644 --- a/test/completion/bash-it.completion.bats +++ b/test/completion/bash-it.completion.bats @@ -99,32 +99,32 @@ function __check_completion () { @test "completion bash-it: show options" { run __check_completion 'bash-it ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: bash-ti - show options" { run __check_completion 'bash-ti ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: shit - show options" { run __check_completion 'shit ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: bashit - show options" { run __check_completion 'bashit ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: batshit - show options" { run __check_completion 'batshit ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: bash_it - show options" { run __check_completion 'bash_it ' - assert_line "0" "disable enable help migrate search show update" + assert_line "0" "disable enable help migrate search show update version" } @test "completion bash-it: show - show options" {