From da8868ffd9b47b13ff8abae9d2eb1fd5d4f19800 Mon Sep 17 00:00:00 2001 From: Naveen Gogineni Date: Tue, 18 Oct 2022 19:53:02 -0400 Subject: [PATCH 1/4] Fix:(issue_1288). Add windows specific env format --- flag.go | 25 +++++++++++-------------- flag_windows.go | 12 ++++++++++++ 2 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 flag_windows.go diff --git a/flag.go b/flag.go index a6fea1c493..63af8dd76d 100644 --- a/flag.go +++ b/flag.go @@ -6,7 +6,6 @@ import ( "fmt" "io/ioutil" "regexp" - "runtime" "strings" "syscall" "time" @@ -268,21 +267,19 @@ func prefixedNames(names []string, placeholder string) string { return prefixed } -func withEnvHint(envVars []string, str string) string { - envText := "" +func envFormat(envVars []string, prefix, sep, suffix string) string { if len(envVars) > 0 { - prefix := "$" - suffix := "" - sep := ", $" - if runtime.GOOS == "windows" { - prefix = "%" - suffix = "%" - sep = "%, %" - } - - envText = fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(envVars, sep), suffix) + return fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(envVars, sep), suffix) } - return str + envText + return "" +} + +func defaultEnvFormat(envVars []string) string { + return envFormat(envVars, "$", ", $", "") +} + +func withEnvHint(envVars []string, str string) string { + return str + defaultEnvFormat(envVars) } func FlagNames(name string, aliases []string) []string { diff --git a/flag_windows.go b/flag_windows.go new file mode 100644 index 0000000000..ab777c3447 --- /dev/null +++ b/flag_windows.go @@ -0,0 +1,12 @@ +package cli + +func withEnvHint(envVars []string, str string) string { + // if we are running is powershell this env var is set + // and so we should use the default env format + if os.Getenv("PSHOME") != "" { + envText = defaultEnvFormat(envVars) + } else { + envText = envFormat(envVars, "%", "%, %", "%") + } + return str + envText +} From f460fd1c94e85dfce38869c6cfa3ebd0e85a05dd Mon Sep 17 00:00:00 2001 From: Naveen Gogineni Date: Tue, 18 Oct 2022 19:56:30 -0400 Subject: [PATCH 2/4] Run goimports --- flag_test.go | 50 ++++++++++++++++++++++++------------------------- flag_windows.go | 2 ++ 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/flag_test.go b/flag_test.go index 6e03582ff4..5307ce5576 100644 --- a/flag_test.go +++ b/flag_test.go @@ -3026,55 +3026,55 @@ func TestFlagDefaultValue(t *testing.T) { name: "stringSlice", flag: &StringSliceFlag{Name: "flag", Value: NewStringSlice("default1", "default2")}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value [ --flag value ] (default: "default1", "default2")`, + expect: `--flag value [ --flag value ] (default: "default1", "default2")`, }, { name: "float64Slice", flag: &Float64SliceFlag{Name: "flag", Value: NewFloat64Slice(1.1, 2.2)}, toParse: []string{"--flag", "13.3"}, - expect: `--flag value [ --flag value ] (default: 1.1, 2.2)`, + expect: `--flag value [ --flag value ] (default: 1.1, 2.2)`, }, { name: "int64Slice", flag: &Int64SliceFlag{Name: "flag", Value: NewInt64Slice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "intSlice", flag: &IntSliceFlag{Name: "flag", Value: NewIntSlice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "uint64Slice", flag: &Uint64SliceFlag{Name: "flag", Value: NewUint64Slice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "uintSlice", flag: &UintSliceFlag{Name: "flag", Value: NewUintSlice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "string", flag: &StringFlag{Name: "flag", Value: "default"}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value (default: "default")`, + expect: `--flag value (default: "default")`, }, { name: "bool", flag: &BoolFlag{Name: "flag", Value: true}, toParse: []string{"--flag", "false"}, - expect: `--flag (default: true)`, + expect: `--flag (default: true)`, }, { name: "uint64", flag: &Uint64Flag{Name: "flag", Value: 1}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)`, + expect: `--flag value (default: 1)`, }, } for i, v := range cases { @@ -3111,7 +3111,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "stringSlice", flag: &StringSliceFlag{Name: "flag", Value: NewStringSlice("default1", "default2"), EnvVars: []string{"ssflag"}}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value [ --flag value ] (default: "default1", "default2")` + withEnvHint([]string{"ssflag"}, ""), + expect: `--flag value [ --flag value ] (default: "default1", "default2")` + withEnvHint([]string{"ssflag"}, ""), environ: map[string]string{ "ssflag": "some-other-env_value", }, @@ -3120,7 +3120,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "float64Slice", flag: &Float64SliceFlag{Name: "flag", Value: NewFloat64Slice(1.1, 2.2), EnvVars: []string{"fsflag"}}, toParse: []string{"--flag", "13.3"}, - expect: `--flag value [ --flag value ] (default: 1.1, 2.2)` + withEnvHint([]string{"fsflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1.1, 2.2)` + withEnvHint([]string{"fsflag"}, ""), environ: map[string]string{ "fsflag": "20304.222", }, @@ -3129,7 +3129,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int64Slice", flag: &Int64SliceFlag{Name: "flag", Value: NewInt64Slice(1, 2), EnvVars: []string{"isflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), environ: map[string]string{ "isflag": "101", }, @@ -3138,7 +3138,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "intSlice", flag: &IntSliceFlag{Name: "flag", Value: NewIntSlice(1, 2), EnvVars: []string{"isflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), environ: map[string]string{ "isflag": "101", }, @@ -3147,7 +3147,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint64Slice", flag: &Uint64SliceFlag{Name: "flag", Value: NewUint64Slice(1, 2), EnvVars: []string{"uisflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), environ: map[string]string{ "uisflag": "3", }, @@ -3156,7 +3156,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uintSlice", flag: &UintSliceFlag{Name: "flag", Value: NewUintSlice(1, 2), EnvVars: []string{"uisflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), environ: map[string]string{ "uisflag": "3", }, @@ -3165,7 +3165,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "string", flag: &StringFlag{Name: "flag", Value: "default", EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value (default: "default")` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: "default")` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "some-other-string", }, @@ -3174,7 +3174,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "bool", flag: &BoolFlag{Name: "flag", Value: true, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "false"}, - expect: `--flag (default: true)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag (default: true)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "false", }, @@ -3183,7 +3183,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint64", flag: &Uint64Flag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3192,7 +3192,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint", flag: &UintFlag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3201,7 +3201,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int64", flag: &Int64Flag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3210,7 +3210,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int", flag: &IntFlag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3219,7 +3219,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "duration", flag: &DurationFlag{Name: "flag", Value: time.Second, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "2m"}, - expect: `--flag value (default: 1s)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1s)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "2h4m10s", }, @@ -3228,7 +3228,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "path", flag: &PathFlag{Name: "flag", Value: "/tmp/foo", EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "/bar/ddfr"}, - expect: `--flag value (default: "/tmp/foo")` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: "/tmp/foo")` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "/bar/t/err", }, @@ -3237,7 +3237,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "timestamp", flag: &TimestampFlag{Name: "flag", Value: NewTimestamp(ts), Layout: time.RFC3339, EnvVars: []string{"tflag"}}, toParse: []string{"--flag", "2006-11-02T15:04:05Z"}, - expect: `--flag value (default: 2005-01-02 15:04:05 +0000 UTC)` + withEnvHint([]string{"tflag"}, ""), + expect: `--flag value (default: 2005-01-02 15:04:05 +0000 UTC)` + withEnvHint([]string{"tflag"}, ""), environ: map[string]string{ "tflag": "2010-01-02T15:04:05Z", }, @@ -3246,7 +3246,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "generic", flag: &GenericFlag{Name: "flag", Value: &Parser{"11", "12"}, EnvVars: []string{"gflag"}}, toParse: []string{"--flag", "15,16"}, - expect: `--flag value (default: 11,12)` + withEnvHint([]string{"gflag"}, ""), + expect: `--flag value (default: 11,12)` + withEnvHint([]string{"gflag"}, ""), environ: map[string]string{ "gflag": "13,14", }, diff --git a/flag_windows.go b/flag_windows.go index ab777c3447..1586412cc7 100644 --- a/flag_windows.go +++ b/flag_windows.go @@ -1,5 +1,7 @@ package cli +import "os" + func withEnvHint(envVars []string, str string) string { // if we are running is powershell this env var is set // and so we should use the default env format From 374bbfb3da0a3626a494f07e76ddfa0b1220eeb4 Mon Sep 17 00:00:00 2001 From: Naveen Gogineni Date: Wed, 19 Oct 2022 09:34:59 -0400 Subject: [PATCH 3/4] Revert flag_test.go --- flag_test.go | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/flag_test.go b/flag_test.go index 5307ce5576..6e03582ff4 100644 --- a/flag_test.go +++ b/flag_test.go @@ -3026,55 +3026,55 @@ func TestFlagDefaultValue(t *testing.T) { name: "stringSlice", flag: &StringSliceFlag{Name: "flag", Value: NewStringSlice("default1", "default2")}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value [ --flag value ] (default: "default1", "default2")`, + expect: `--flag value [ --flag value ] (default: "default1", "default2")`, }, { name: "float64Slice", flag: &Float64SliceFlag{Name: "flag", Value: NewFloat64Slice(1.1, 2.2)}, toParse: []string{"--flag", "13.3"}, - expect: `--flag value [ --flag value ] (default: 1.1, 2.2)`, + expect: `--flag value [ --flag value ] (default: 1.1, 2.2)`, }, { name: "int64Slice", flag: &Int64SliceFlag{Name: "flag", Value: NewInt64Slice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "intSlice", flag: &IntSliceFlag{Name: "flag", Value: NewIntSlice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "uint64Slice", flag: &Uint64SliceFlag{Name: "flag", Value: NewUint64Slice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "uintSlice", flag: &UintSliceFlag{Name: "flag", Value: NewUintSlice(1, 2)}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)`, + expect: `--flag value [ --flag value ] (default: 1, 2)`, }, { name: "string", flag: &StringFlag{Name: "flag", Value: "default"}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value (default: "default")`, + expect: `--flag value (default: "default")`, }, { name: "bool", flag: &BoolFlag{Name: "flag", Value: true}, toParse: []string{"--flag", "false"}, - expect: `--flag (default: true)`, + expect: `--flag (default: true)`, }, { name: "uint64", flag: &Uint64Flag{Name: "flag", Value: 1}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)`, + expect: `--flag value (default: 1)`, }, } for i, v := range cases { @@ -3111,7 +3111,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "stringSlice", flag: &StringSliceFlag{Name: "flag", Value: NewStringSlice("default1", "default2"), EnvVars: []string{"ssflag"}}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value [ --flag value ] (default: "default1", "default2")` + withEnvHint([]string{"ssflag"}, ""), + expect: `--flag value [ --flag value ] (default: "default1", "default2")` + withEnvHint([]string{"ssflag"}, ""), environ: map[string]string{ "ssflag": "some-other-env_value", }, @@ -3120,7 +3120,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "float64Slice", flag: &Float64SliceFlag{Name: "flag", Value: NewFloat64Slice(1.1, 2.2), EnvVars: []string{"fsflag"}}, toParse: []string{"--flag", "13.3"}, - expect: `--flag value [ --flag value ] (default: 1.1, 2.2)` + withEnvHint([]string{"fsflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1.1, 2.2)` + withEnvHint([]string{"fsflag"}, ""), environ: map[string]string{ "fsflag": "20304.222", }, @@ -3129,7 +3129,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int64Slice", flag: &Int64SliceFlag{Name: "flag", Value: NewInt64Slice(1, 2), EnvVars: []string{"isflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), environ: map[string]string{ "isflag": "101", }, @@ -3138,7 +3138,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "intSlice", flag: &IntSliceFlag{Name: "flag", Value: NewIntSlice(1, 2), EnvVars: []string{"isflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"isflag"}, ""), environ: map[string]string{ "isflag": "101", }, @@ -3147,7 +3147,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint64Slice", flag: &Uint64SliceFlag{Name: "flag", Value: NewUint64Slice(1, 2), EnvVars: []string{"uisflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), environ: map[string]string{ "uisflag": "3", }, @@ -3156,7 +3156,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uintSlice", flag: &UintSliceFlag{Name: "flag", Value: NewUintSlice(1, 2), EnvVars: []string{"uisflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), + expect: `--flag value [ --flag value ] (default: 1, 2)` + withEnvHint([]string{"uisflag"}, ""), environ: map[string]string{ "uisflag": "3", }, @@ -3165,7 +3165,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "string", flag: &StringFlag{Name: "flag", Value: "default", EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "parsed"}, - expect: `--flag value (default: "default")` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: "default")` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "some-other-string", }, @@ -3174,7 +3174,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "bool", flag: &BoolFlag{Name: "flag", Value: true, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "false"}, - expect: `--flag (default: true)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag (default: true)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "false", }, @@ -3183,7 +3183,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint64", flag: &Uint64Flag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3192,7 +3192,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "uint", flag: &UintFlag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3201,7 +3201,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int64", flag: &Int64Flag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3210,7 +3210,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "int", flag: &IntFlag{Name: "flag", Value: 1, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "13"}, - expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "10", }, @@ -3219,7 +3219,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "duration", flag: &DurationFlag{Name: "flag", Value: time.Second, EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "2m"}, - expect: `--flag value (default: 1s)` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: 1s)` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "2h4m10s", }, @@ -3228,7 +3228,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "path", flag: &PathFlag{Name: "flag", Value: "/tmp/foo", EnvVars: []string{"uflag"}}, toParse: []string{"--flag", "/bar/ddfr"}, - expect: `--flag value (default: "/tmp/foo")` + withEnvHint([]string{"uflag"}, ""), + expect: `--flag value (default: "/tmp/foo")` + withEnvHint([]string{"uflag"}, ""), environ: map[string]string{ "uflag": "/bar/t/err", }, @@ -3237,7 +3237,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "timestamp", flag: &TimestampFlag{Name: "flag", Value: NewTimestamp(ts), Layout: time.RFC3339, EnvVars: []string{"tflag"}}, toParse: []string{"--flag", "2006-11-02T15:04:05Z"}, - expect: `--flag value (default: 2005-01-02 15:04:05 +0000 UTC)` + withEnvHint([]string{"tflag"}, ""), + expect: `--flag value (default: 2005-01-02 15:04:05 +0000 UTC)` + withEnvHint([]string{"tflag"}, ""), environ: map[string]string{ "tflag": "2010-01-02T15:04:05Z", }, @@ -3246,7 +3246,7 @@ func TestFlagDefaultValueWithEnv(t *testing.T) { name: "generic", flag: &GenericFlag{Name: "flag", Value: &Parser{"11", "12"}, EnvVars: []string{"gflag"}}, toParse: []string{"--flag", "15,16"}, - expect: `--flag value (default: 11,12)` + withEnvHint([]string{"gflag"}, ""), + expect: `--flag value (default: 11,12)` + withEnvHint([]string{"gflag"}, ""), environ: map[string]string{ "gflag": "13,14", }, From 96bff3c5e14817f280e251e7925d5322c9ae5dce Mon Sep 17 00:00:00 2001 From: Naveen Gogineni Date: Wed, 19 Oct 2022 09:44:21 -0400 Subject: [PATCH 4/4] Remove flag_windows and use runtime --- flag.go | 10 +++++++++- flag_windows.go | 14 -------------- 2 files changed, 9 insertions(+), 15 deletions(-) delete mode 100644 flag_windows.go diff --git a/flag.go b/flag.go index 63af8dd76d..7535424c04 100644 --- a/flag.go +++ b/flag.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "io/ioutil" + "os" "regexp" + "runtime" "strings" "syscall" "time" @@ -279,7 +281,13 @@ func defaultEnvFormat(envVars []string) string { } func withEnvHint(envVars []string, str string) string { - return str + defaultEnvFormat(envVars) + envText := "" + if runtime.GOOS != "windows" || os.Getenv("PSHOME") != "" { + envText = defaultEnvFormat(envVars) + } else { + envText = envFormat(envVars, "%", "%, %", "%") + } + return str + envText } func FlagNames(name string, aliases []string) []string { diff --git a/flag_windows.go b/flag_windows.go deleted file mode 100644 index 1586412cc7..0000000000 --- a/flag_windows.go +++ /dev/null @@ -1,14 +0,0 @@ -package cli - -import "os" - -func withEnvHint(envVars []string, str string) string { - // if we are running is powershell this env var is set - // and so we should use the default env format - if os.Getenv("PSHOME") != "" { - envText = defaultEnvFormat(envVars) - } else { - envText = envFormat(envVars, "%", "%, %", "%") - } - return str + envText -}