Browse Source

Fix 2 corner cases with PATH settings
* windows PATH should use windows separator (;)
* do not add separator if initial PATH is empty (was creating PATH=:/path)

Signed-off-by: Guillaume Tardif <[email protected]>

Guillaume Tardif 5 years ago
parent
commit
b604ba6246
2 changed files with 15 additions and 1 deletions
  1. 10 1
      cli/main.go
  2. 5 0
      cli/main_test.go

+ 10 - 1
cli/main.go

@@ -24,6 +24,7 @@ import (
 	"os/signal"
 	"path/filepath"
 	"regexp"
+	"strings"
 	"syscall"
 	"time"
 
@@ -73,13 +74,21 @@ func init() {
 	if err != nil {
 		fatal(errors.Wrap(err, "unable to get absolute bin path"))
 	}
-	if err := os.Setenv("PATH", fmt.Sprintf("%s%s%s", os.Getenv("PATH"), os.PathListSeparator, path)); err != nil {
+
+	if err := os.Setenv("PATH", appendPaths(os.Getenv("PATH"), path)); err != nil {
 		panic(err)
 	}
 	// Seed random
 	rand.Seed(time.Now().UnixNano())
 }
 
+func appendPaths(envPath string, path string) string {
+	if envPath == "" {
+		return path
+	}
+	return strings.Join([]string{envPath, path}, string(os.PathListSeparator))
+}
+
 func isContextAgnosticCommand(cmd *cobra.Command) bool {
 	if cmd == nil {
 		return false

+ 5 - 0
cli/main_test.go

@@ -69,3 +69,8 @@ func TestCheckOwnCommand(t *testing.T) {
 	assert.Assert(t, !isContextAgnosticCommand(cmd.LogsCommand()))
 	assert.Assert(t, !isContextAgnosticCommand(cmd.PsCommand()))
 }
+
+func TestAppendPaths(t *testing.T) {
+	assert.Equal(t, appendPaths("", "/bin/path"), "/bin/path")
+	assert.Equal(t, appendPaths("path1", "binaryPath"), "path1"+string(os.PathListSeparator)+"binaryPath")
+}