From 1c9b37cb965be459a93ce07539d7b2a53fbdbc6a Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Wed, 18 Feb 2015 13:32:42 -0800 Subject: [PATCH] Shorten printed Windows paths on docker help cmd This makes use of `%USERPROFILE%` as a substitute for `~` on Windows and prints shorter strings for default cert paths etc. Also removes string escaping/quotes around default path values printed in `docker help` command as they are not really necessary and adds double backslashes (\\) on windows. Signed-off-by: Ahmet Alp Balkan --- integration-cli/docker_cli_help_test.go | 21 +++++++-------------- pkg/mflag/flag.go | 14 ++++---------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/integration-cli/docker_cli_help_test.go b/integration-cli/docker_cli_help_test.go index 82761772f..6a1e9a724 100644 --- a/integration-cli/docker_cli_help_test.go +++ b/integration-cli/docker_cli_help_test.go @@ -1,23 +1,19 @@ package main import ( - "os" "os/exec" - "runtime" "strings" "testing" "unicode" + + "github.com/docker/docker/pkg/homedir" ) func TestMainHelpWidth(t *testing.T) { // Make sure main help text fits within 80 chars and that // on non-windows system we use ~ when possible (to shorten things) - var home string - if runtime.GOOS != "windows" { - home = os.Getenv("HOME") - } - + home := homedir.Get() helpCmd := exec.Command(dockerBinary, "help") out, ec, err := runCommandWithOutput(helpCmd) if err != nil || ec != 0 { @@ -27,9 +23,10 @@ func TestMainHelpWidth(t *testing.T) { for _, line := range lines { if len(line) > 80 { t.Fatalf("Line is too long(%d chars):\n%s", len(line), line) + } if home != "" && strings.Contains(line, home) { - t.Fatalf("Line should use ~ instead of %q:\n%s", home, line) + t.Fatalf("Line should use '%q' instead of %q:\n%s", homedir.GetShortcutString(), home, line) } } logDone("help - verify main width") @@ -39,11 +36,7 @@ func TestCmdHelpWidth(t *testing.T) { // Make sure main help text fits within 80 chars and that // on non-windows system we use ~ when possible (to shorten things) - var home string - if runtime.GOOS != "windows" { - home = os.Getenv("HOME") - } - + home := homedir.Get() // Pull the list of commands from the "Commands:" section of docker help helpCmd := exec.Command(dockerBinary, "help") out, ec, err := runCommandWithOutput(helpCmd) @@ -82,7 +75,7 @@ func TestCmdHelpWidth(t *testing.T) { t.Fatalf("Help for %q is too long(%d chars):\n%s", command, len(line), line) } if home != "" && strings.Contains(line, home) { - t.Fatalf("Help for %q should use ~ instead of %q on:\n%s", command, home, line) + t.Fatalf("Help for %q should use home shortcut instead of %q on:\n%s", command, home, line) } } } diff --git a/pkg/mflag/flag.go b/pkg/mflag/flag.go index cbdd5eaee..edb17a285 100644 --- a/pkg/mflag/flag.go +++ b/pkg/mflag/flag.go @@ -86,12 +86,13 @@ import ( "fmt" "io" "os" - "runtime" "sort" "strconv" "strings" "text/tabwriter" "time" + + "github.com/docker/docker/pkg/homedir" ) // ErrHelp is the error returned if the flag -help is invoked but no such flag is defined. @@ -504,16 +505,9 @@ func Set(name, value string) error { // otherwise, the default values of all defined flags in the set. func (f *FlagSet) PrintDefaults() { writer := tabwriter.NewWriter(f.Out(), 20, 1, 3, ' ', 0) - var home string - if runtime.GOOS != "windows" { - home = os.Getenv("HOME") - } + home := homedir.Get() f.VisitAll(func(flag *Flag) { format := " -%s=%s" - if _, ok := flag.Value.(*stringValue); ok { - // put quotes on the value - format = " -%s=%q" - } names := []string{} for _, name := range flag.Names { if name[0] != '#' { @@ -524,7 +518,7 @@ func (f *FlagSet) PrintDefaults() { val := flag.DefValue if home != "" && strings.HasPrefix(val, home) { - val = "~" + val[len(home):] + val = homedir.GetShortcutString() + val[len(home):] } fmt.Fprintf(writer, format, strings.Join(names, ", -"), val)