From 3838442440003b26ce88f59889ea4d4c87ad3896 Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Fri, 15 Feb 2019 06:52:33 -0800 Subject: [PATCH 1/3] Implement 7-bit ASCII prefixes --- pkg/minikube/console/console_test.go | 37 +++++++++---- pkg/minikube/console/style.go | 77 +++++++++++++++++----------- 2 files changed, 74 insertions(+), 40 deletions(-) diff --git a/pkg/minikube/console/console_test.go b/pkg/minikube/console/console_test.go index cde2b86f89..7e0af8e1da 100644 --- a/pkg/minikube/console/console_test.go +++ b/pkg/minikube/console/console_test.go @@ -46,17 +46,34 @@ func (f *fakeFile) String() string { } func TestOutStyle(t *testing.T) { - os.Setenv(OverrideEnv, "1") - f := newFakeFile() - SetOutFile(f) - if err := OutStyle("happy", "This is a happy message."); err != nil { - t.Errorf("unexpected error: %q", err) - } - got := f.String() - want := "๐Ÿ˜„ This is a happy message.\n" - if got != want { - t.Errorf("OutStyle() = %q, want %q", got, want) + var tests = []struct { + style string + envValue string + message string + want string + }{ + {"happy", "true", "This is happy.", "๐Ÿ˜„ This is happy.\n"}, + {"Docker", "true", "This is Docker.", "๐Ÿณ This is Docker.\n"}, + {"option", "true", "This is option.", " โ–ช This is option.\n"}, + + {"happy", "false", "This is happy.", "o This is happy.\n"}, + {"Docker", "false", "This is Docker.", "- This is Docker.\n"}, + {"option", "false", "This is option.", " - This is option.\n"}, + } + for _, tc := range tests { + t.Run(tc.style+"-"+tc.envValue, func(t *testing.T) { + os.Setenv(OverrideEnv, tc.envValue) + f := newFakeFile() + SetOutFile(f) + if err := OutStyle(tc.style, tc.message); err != nil { + t.Errorf("unexpected error: %q", err) + } + got := f.String() + if got != tc.want { + t.Errorf("OutStyle() = %q, want %q", got, tc.want) + } + }) } } diff --git a/pkg/minikube/console/style.go b/pkg/minikube/console/style.go index 1265a65580..186d91a08d 100644 --- a/pkg/minikube/console/style.go +++ b/pkg/minikube/console/style.go @@ -18,14 +18,22 @@ package console import ( "fmt" + "strings" "golang.org/x/text/message" ) +var ( + defaultLowPrefix = "- " + defautlLowIndentPrefix = " - " +) + // style describes how to stylize a message. type style struct { // Prefix is a string to place in the beginning of a message Prefix string + // LowPrefix is the 7-bit compatible prefix we fallback to for less-awesome terminals + LowPrefix string // OmitNewline omits a newline at the end of a message. OmitNewline bool } @@ -33,39 +41,39 @@ type style struct { // styles is a map of style name to style struct // For consistency, ensure that emojis added render with the same width across platforms. var styles = map[string]style{ - "happy": {Prefix: "๐Ÿ˜„ "}, + "happy": {Prefix: "๐Ÿ˜„ ", LowPrefix: "o "}, "success": {Prefix: "โœ… "}, - "failure": {Prefix: "โŒ "}, - "conflict": {Prefix: "๐Ÿ’ฅ "}, - "fatal": {Prefix: "๐Ÿ’ฃ "}, - "notice": {Prefix: "๐Ÿ“Œ "}, - "ready": {Prefix: "๐Ÿ„ "}, - "running": {Prefix: "๐Ÿƒ "}, - "provisioning": {Prefix: "๐ŸŒฑ "}, - "restarting": {Prefix: "๐Ÿ”„ "}, - "stopping": {Prefix: "โœ‹ "}, + "failure": {Prefix: "โŒ ", LowPrefix: "X "}, + "conflict": {Prefix: "๐Ÿ’ฅ ", LowPrefix: "x "}, + "fatal": {Prefix: "๐Ÿ’ฃ ", LowPrefix: "! "}, + "notice": {Prefix: "๐Ÿ“Œ ", LowPrefix: "* "}, + "ready": {Prefix: "๐Ÿ„ ", LowPrefix: "= "}, + "running": {Prefix: "๐Ÿƒ ", LowPrefix: ": "}, + "provisioning": {Prefix: "๐ŸŒฑ ", LowPrefix: "> "}, + "restarting": {Prefix: "๐Ÿ”„ ", LowPrefix: ": "}, + "stopping": {Prefix: "โœ‹ ", LowPrefix: ": "}, "stopped": {Prefix: "๐Ÿ›‘ "}, - "warning": {Prefix: "โš ๏ธ "}, - "waiting": {Prefix: "โŒ› "}, + "warning": {Prefix: "โš ๏ธ ", LowPrefix: "! "}, + "waiting": {Prefix: "โŒ› ", LowPrefix: ": "}, "usage": {Prefix: "๐Ÿ’ก "}, "launch": {Prefix: "๐Ÿš€ "}, - "sad": {Prefix: "๐Ÿ˜ฟ "}, + "sad": {Prefix: "๐Ÿ˜ฟ ", LowPrefix: "* "}, "thumbs-up": {Prefix: "๐Ÿ‘ "}, "option": {Prefix: " โ–ช "}, // Indented bullet "url": {Prefix: "๐Ÿ‘‰ "}, "crushed": {Prefix: "๐Ÿ’” "}, // Specialized purpose styles - "iso-download": {Prefix: "๐Ÿ’ฟ "}, - "file-download": {Prefix: "๐Ÿ’พ "}, - "caching": {Prefix: "๐Ÿคน "}, - "starting-vm": {Prefix: "๐Ÿ”ฅ "}, - "starting-none": {Prefix: "๐Ÿคน "}, - "resetting": {Prefix: "๐Ÿ”„ "}, - "deleting-host": {Prefix: "๐Ÿ”ฅ "}, + "iso-download": {Prefix: "๐Ÿ’ฟ ", LowPrefix: "@ "}, + "file-download": {Prefix: "๐Ÿ’พ ", LowPrefix: "@ "}, + "caching": {Prefix: "๐Ÿคน ", LowPrefix: "$ "}, + "starting-vm": {Prefix: "๐Ÿ”ฅ ", LowPrefix: "> "}, + "starting-none": {Prefix: "๐Ÿคน ", LowPrefix: "> "}, + "resetting": {Prefix: "๐Ÿ”„ ", LowPrefix: "# "}, + "deleting-host": {Prefix: "๐Ÿ”ฅ ", LowPrefix: "x "}, "copying": {Prefix: "โœจ "}, "connectivity": {Prefix: "๐Ÿ“ถ "}, - "internet": {Prefix: "๐ŸŒ "}, + "internet": {Prefix: "๐ŸŒ ", LowPrefix: "& "}, "mounting": {Prefix: "๐Ÿ“ "}, "celebrate": {Prefix: "๐ŸŽ‰ "}, "container-runtime": {Prefix: "๐ŸŽ "}, @@ -78,10 +86,10 @@ var styles = map[string]style{ "pulling": {Prefix: "๐Ÿšœ "}, "verifying": {Prefix: "๐Ÿค” "}, "verifying-noline": {Prefix: "๐Ÿค” ", OmitNewline: true}, - "kubectl": {Prefix: "๐Ÿ’— "}, - "meh": {Prefix: "๐Ÿ™„ "}, - "embarassed": {Prefix: "๐Ÿคฆ "}, - "tip": {Prefix: "๐Ÿ’ก "}, + "kubectl": {Prefix: "๐Ÿ’— ", LowPrefix: "+ "}, + "meh": {Prefix: "๐Ÿ™„ ", LowPrefix: "? "}, + "embarassed": {Prefix: "๐Ÿคฆ ", LowPrefix: "* "}, + "tip": {Prefix: "๐Ÿ’ก ", LowPrefix: "i "}, } // Add a prefix to a string @@ -98,6 +106,17 @@ func hasStyle(style string) bool { return exists } +// lowPrefix returns a 7-bit compatible prefix for a style +func lowPrefix(s style) string { + if s.LowPrefix != "" { + return s.LowPrefix + } + if strings.HasPrefix(s.Prefix, " ") { + return defautlLowIndentPrefix + } + return defaultLowPrefix +} + // Apply styling to a format string func applyStyle(style string, useColor bool, format string, a ...interface{}) (string, error) { p := message.NewPrinter(preferredLanguage) @@ -113,10 +132,8 @@ func applyStyle(style string, useColor bool, format string, a ...interface{}) (s return p.Sprintf(format, a...), fmt.Errorf("unknown style: %q", style) } - prefix := s.Prefix - if !useColor && prefix != "" { - prefix = "-" + if !useColor { + return applyPrefix(lowPrefix(s), out), nil } - out = applyPrefix(prefix, out) - return out, nil + return applyPrefix(s.Prefix, out), nil } From 5013af791740cbc60f18a72d2405e391cc9dd2f9 Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Fri, 15 Feb 2019 07:03:31 -0800 Subject: [PATCH 2/3] Change LowPrefix for internet. It looked strange with the indented options --- pkg/minikube/console/style.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/console/style.go b/pkg/minikube/console/style.go index 186d91a08d..e10bca95e4 100644 --- a/pkg/minikube/console/style.go +++ b/pkg/minikube/console/style.go @@ -73,7 +73,7 @@ var styles = map[string]style{ "deleting-host": {Prefix: "๐Ÿ”ฅ ", LowPrefix: "x "}, "copying": {Prefix: "โœจ "}, "connectivity": {Prefix: "๐Ÿ“ถ "}, - "internet": {Prefix: "๐ŸŒ ", LowPrefix: "& "}, + "internet": {Prefix: "๐ŸŒ ", LowPrefix: "o "}, "mounting": {Prefix: "๐Ÿ“ "}, "celebrate": {Prefix: "๐ŸŽ‰ "}, "container-runtime": {Prefix: "๐ŸŽ "}, From 18adab13fa5e5d5b7b4ab5725b868cfd2d68cc4a Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Fri, 15 Feb 2019 07:21:40 -0800 Subject: [PATCH 3/3] Remove duplicate keys from merge --- pkg/minikube/console/style.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/minikube/console/style.go b/pkg/minikube/console/style.go index b29d3e19d6..e7b3b541f9 100644 --- a/pkg/minikube/console/style.go +++ b/pkg/minikube/console/style.go @@ -62,8 +62,6 @@ var styles = map[string]style{ "option": {Prefix: " โ–ช "}, // Indented bullet "log-entry": {Prefix: " "}, // Indent "crushed": {Prefix: "๐Ÿ’” "}, - "running": {Prefix: "๐Ÿƒ "}, - "provisioning": {Prefix: "๐ŸŒฑ "}, "url": {Prefix: "๐Ÿ‘‰ "}, // Specialized purpose styles