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 <guillaume.tardif@docker.com>
This commit is contained in:
Guillaume Tardif 2020-10-29 15:22:44 +01:00
parent 5e809acd87
commit b604ba6246
2 changed files with 15 additions and 1 deletions

View File

@ -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

View File

@ -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")
}