From f140104e4a6cbe419f957c761884d279dbcfeb8a Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Thu, 6 Apr 2017 23:17:32 -0500 Subject: [PATCH 1/6] only show go_version segment if inside GOPATH As of Go v1.8 GOPATH need not be set, as it will default to $HOME/go. By using `go env GOPATH` to retrieve the value first, this technique will work regardless of whether GOPATH is currently set by the user. --- powerlevel9k.zsh-theme | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index bbd1ec44..09ce6b3d 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -744,9 +744,11 @@ prompt_docker_machine() { # GO prompt prompt_go_version() { local go_version + local go_path go_version=$(go version 2>/dev/null | sed -E "s/.*(go[0-9.]*).*/\1/") + go_path=$(go env GOPATH) - if [[ -n "$go_version" ]]; then + if [[ -n "$go_version" && "${PWD##$go_path}" != "$PWD" ]]; then "$1_prompt_segment" "$0" "$2" "green" "255" "$go_version" fi } From 21d8fc63780f6046267ef9d4c1df46de2eac9913 Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Wed, 12 Apr 2017 17:09:23 -0500 Subject: [PATCH 2/6] Redirect stderr for GOPATH check to /dev/null Accounts for instances where `go` binary is not installed. --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 09ce6b3d..73dedcf6 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -746,7 +746,7 @@ prompt_go_version() { local go_version local go_path go_version=$(go version 2>/dev/null | sed -E "s/.*(go[0-9.]*).*/\1/") - go_path=$(go env GOPATH) + go_path=$(go env GOPATH 2>/dev/null) if [[ -n "$go_version" && "${PWD##$go_path}" != "$PWD" ]]; then "$1_prompt_segment" "$0" "$2" "green" "255" "$go_version" From 192d634e08c428fb3ea82aefc3665dba941be3d8 Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Wed, 19 Apr 2017 00:09:07 -0500 Subject: [PATCH 3/6] ensure go_version segment prints if PWD is subset of non-empty GOPATH --- test/segments/go_version.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index aa9f625d..173086e0 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -19,8 +19,11 @@ function testGo() { alias go=mockGo POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version) + PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k" + assertEquals "%K{green} %F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)" + unset PWD unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unalias go } From ac3307400d06c98205e84823b913f40ac584680e Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Wed, 19 Apr 2017 00:11:02 -0500 Subject: [PATCH 4/6] update go mock to allow for both version and env sub-commands --- test/segments/go_version.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index 173086e0..a085f3b3 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -12,7 +12,14 @@ function setUp() { } function mockGo() { - echo 'go version go1.5.3 darwin/amd64' + case "$1" in + 'version') + echo 'go version go1.5.3 darwin/amd64' + ;; + 'env') + echo "$HOME/go" + ;; + esac } function testGo() { From 0519384d57cc019ca6df48940483a14b94e3d57f Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Wed, 19 Apr 2017 00:11:54 -0500 Subject: [PATCH 5/6] test that go_segment prints nothing if GOPATH is set but is not a subset of PWD --- test/segments/go_version.spec | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index a085f3b3..3bbad1be 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -35,6 +35,17 @@ function testGo() { unalias go } +function testGoSegmentPrintsNothingIfNotInGopath() { + alias go=mockGo + POWERLEVEL9K_CUSTOM_WORLD='echo world' + POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version) + + assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)" + + unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS + unset POWERLEVEL9K_CUSTOM_WORLD +} + function testGoSegmentPrintsNothingIfGoIsNotAvailable() { alias go=noGo POWERLEVEL9K_CUSTOM_WORLD='echo world' From 55cf15ac41219e50d380adf9b5140b4cf9c259f5 Mon Sep 17 00:00:00 2001 From: Jason Hutchinson Date: Wed, 19 Apr 2017 00:12:34 -0500 Subject: [PATCH 6/6] test that go_segment prints nothing if GOPATH is not set --- test/segments/go_version.spec | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index 3bbad1be..907dceb3 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -22,6 +22,17 @@ function mockGo() { esac } +function mockGoEmptyGopath() { + case "$1" in + 'version') + echo 'go version go1.5.3 darwin/amd64' + ;; + 'env') + echo "" + ;; + esac +} + function testGo() { alias go=mockGo POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version) @@ -35,6 +46,18 @@ function testGo() { unalias go } +function testGoSegmentPrintsNothingIfEmptyGopath() { + alias go=mockGoEmptyGopath + POWERLEVEL9K_CUSTOM_WORLD='echo world' + POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version) + + assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)" + + unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS + unset POWERLEVEL9K_CUSTOM_WORLD + +} + function testGoSegmentPrintsNothingIfNotInGopath() { alias go=mockGo POWERLEVEL9K_CUSTOM_WORLD='echo world'