From 029582d3396323ee9e22d285e9995332cfb6319c Mon Sep 17 00:00:00 2001 From: Girish Sadhani Date: Tue, 19 Mar 2019 21:29:55 +0530 Subject: [PATCH] Skip smart label in kubectl describe if field has special chars Attempts to create smart label for fields containing special chanracter ends up looking very odd. This change skips creating smart labels for fields containing special characters other than '-'. --- pkg/kubectl/describe/versioned/describe.go | 10 +++++++++- .../describe/versioned/describe_test.go | 18 +++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pkg/kubectl/describe/versioned/describe.go b/pkg/kubectl/describe/versioned/describe.go index 5579521047b..2aa6bb133a8 100644 --- a/pkg/kubectl/describe/versioned/describe.go +++ b/pkg/kubectl/describe/versioned/describe.go @@ -29,6 +29,7 @@ import ( "strings" "text/tabwriter" "time" + "unicode" "github.com/fatih/camelcase" @@ -302,8 +303,15 @@ func printUnstructuredContent(w PrefixWriter, level int, content map[string]inte } func smartLabelFor(field string) string { - commonAcronyms := []string{"API", "URL", "UID", "OSB", "GUID"} + // skip creating smart label if field name contains + // special characters other than '-' + if strings.IndexFunc(field, func(r rune) bool { + return !unicode.IsLetter(r) && r != '-' + }) != -1 { + return field + } + commonAcronyms := []string{"API", "URL", "UID", "OSB", "GUID"} parts := camelcase.Split(field) result := make([]string, 0, len(parts)) for _, part := range parts { diff --git a/pkg/kubectl/describe/versioned/describe_test.go b/pkg/kubectl/describe/versioned/describe_test.go index f58c10373df..f4c6504d4de 100644 --- a/pkg/kubectl/describe/versioned/describe_test.go +++ b/pkg/kubectl/describe/versioned/describe_test.go @@ -2499,7 +2499,11 @@ func TestDescribeUnstructuredContent(t *testing.T) { }{ { expected: `API Version: v1 -Dummy 2: present +Dummy - Dummy: present +dummy-dummy@dummy: present +dummy/dummy: present +dummy2: present +Dummy Dummy: present Items: Item Bool: true Item Int: 42 @@ -2537,10 +2541,14 @@ URL: http://localhost w := NewPrefixWriter(out) obj := &unstructured.Unstructured{ Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Test", - "dummy1": "present", - "dummy2": "present", + "apiVersion": "v1", + "kind": "Test", + "dummyDummy": "present", + "dummy/dummy": "present", + "dummy-dummy@dummy": "present", + "dummy-dummy": "present", + "dummy1": "present", + "dummy2": "present", "metadata": map[string]interface{}{ "name": "MyName", "namespace": "MyNamespace",