@@ -32,52 +32,98 @@ func (thisRef *Command) showUsage() {
3232 var constVerticalLine = string ('\u2502' )
3333 var constHalfCrossRightLine = string ('\u251C' )
3434 var constHalfCrossUpLine = string ('\u2534' )
35+ var constMaxLineLength = 89
3536
3637 fmt .Println ()
37- fmt .Println (strings .Repeat (constHorizontalLine , 94 ))
38+ fmt .Println (strings .Repeat (constHorizontalLine , constMaxLineLength ))
3839 fmt .Println (fmt .Sprintf (" %s" , thisRef .Description ))
3940
40- fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constHalfCrossDownLine + strings .Repeat (constHorizontalLine , 83 ))
41+ fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constHalfCrossDownLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
4142 fmt .Println (fmt .Sprintf (" Usage %s %s" , constVerticalLine , strings .TrimSpace (usageString )))
42- fmt .Println (fmt .Sprintf (" " ) + constVerticalLine )
4343
4444 if len (definedFlags ) > 0 {
45- fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , 83 ))
46- fmt .Print (fmt .Sprintf (" Flags " + constVerticalLine ))
45+ updatedDefinedFlags := []flag {}
46+ updatedDefinedFlags = append (updatedDefinedFlags , flag {
47+ name : "Name" ,
48+ typeName : "Type" ,
49+ isRequired : "Required" ,
50+ defaultValue : "Default" ,
51+ description : "Description" ,
52+ })
53+ updatedDefinedFlags = append (updatedDefinedFlags , definedFlags ... )
4754
48- pDefinedFlags := paddedFlags (definedFlags )
49- for i , definedFlag := range pDefinedFlags {
50- if i == 0 {
51- fmt .Println (fmt .Sprintf (" %s | type=%s | required=%s | default=%s | %s" , definedFlag .name , definedFlag .typeName , definedFlag .isRequired , definedFlag .defaultValue , definedFlag .description ))
52- } else {
53- fmt .Println (fmt .Sprintf (" %s %s | type=%s | required=%s | default=%s | %s" , constVerticalLine , definedFlag .name , definedFlag .typeName , definedFlag .isRequired , definedFlag .defaultValue , definedFlag .description ))
55+ if ! areTheseGlobalFlags {
56+ rootCmd := thisRef .parentCommand
57+ for {
58+ if rootCmd .parentCommand == nil {
59+ break
60+ }
61+ rootCmd = rootCmd .parentCommand
5462 }
63+ updatedDefinedFlags = append (updatedDefinedFlags , flag {description : "-=GFLAGS=-" })
64+ updatedDefinedFlags = append (updatedDefinedFlags , rootCmd .getDefinedFlags ()... )
5565 }
56- fmt .Println (fmt .Sprintf (" " ) + constVerticalLine )
57- }
5866
59- if ! areTheseGlobalFlags {
60- rootCmd := thisRef .parentCommand
61- for {
62- if rootCmd .parentCommand == nil {
63- break
64- }
65- rootCmd = rootCmd .parentCommand
66- }
67+ pDefinedFlags := paddedFlags (updatedDefinedFlags )
6768
68- pDefinedFlags := paddedFlags (rootCmd .getDefinedFlags ())
69+ fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
70+ fmt .Print (fmt .Sprintf (" Flags " + constVerticalLine ))
6971
70- if len (definedFlags ) > 0 {
71- fmt .Println (" " + constHalfCrossRightLine + strings .Repeat (constHorizontalLine , 10 ) + " global flags " + strings .Repeat (constHorizontalLine , 59 ))
72- for _ , definedFlag := range pDefinedFlags {
73- fmt .Println (fmt .Sprintf (" %s %s | type=%s | required=%s | default=%s | %s" , constVerticalLine , definedFlag .name , definedFlag .typeName , definedFlag .isRequired , definedFlag .defaultValue , definedFlag .description ))
72+ for i , definedFlag := range pDefinedFlags {
73+ definedFlag .name = " " + definedFlag .name
74+ if i == 0 {
75+ lenOfAllColumns := len (" " ) + 5 + len (definedFlag .name ) + 2 + len (definedFlag .typeName ) + 2 + len (definedFlag .isRequired ) + 2 + len (definedFlag .defaultValue ) + 2
76+ fmt .Println (fmt .Sprintf (" %s " + constVerticalLine + " %s " + constVerticalLine + " %s " + constVerticalLine + " %s " + constVerticalLine + " %s" , definedFlag .name , definedFlag .typeName , definedFlag .isRequired , definedFlag .defaultValue , definedFlag .description ))
77+ fmt .Println (" " + constVerticalLine + " " +
78+ strings .Repeat (constHorizontalLine , len (definedFlag .name )) + constCrossLine +
79+ strings .Repeat (constHorizontalLine , len (definedFlag .typeName )+ 2 ) + constCrossLine +
80+ strings .Repeat (constHorizontalLine , len (definedFlag .isRequired )+ 2 ) + constCrossLine +
81+ strings .Repeat (constHorizontalLine , len (definedFlag .defaultValue )+ 2 ) + constCrossLine +
82+ strings .Repeat (constHorizontalLine , constMaxLineLength - lenOfAllColumns ) +
83+ "" )
84+ } else {
85+ if strings .TrimSpace (definedFlag .description ) == "-=GFLAGS=-" {
86+ fmt .Println (" " + constHalfCrossRightLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
87+ } else {
88+ fmt .Println (fmt .Sprintf (" %s %s " + constVerticalLine + " %s " + constVerticalLine + " %s " + constVerticalLine + " %s " + constVerticalLine + " %s" , constVerticalLine , definedFlag .name , definedFlag .typeName , definedFlag .isRequired , definedFlag .defaultValue , definedFlag .description ))
89+ }
7490 }
75- fmt .Println (fmt .Sprintf (" " ) + constVerticalLine )
7691 }
7792 }
7893
94+ // if !areTheseGlobalFlags {
95+ // rootCmd := thisRef.parentCommand
96+ // for {
97+ // if rootCmd.parentCommand == nil {
98+ // break
99+ // }
100+ // rootCmd = rootCmd.parentCommand
101+ // }
102+
103+ // updatedDefinedFlags := []flag{}
104+ // updatedDefinedFlags = append(updatedDefinedFlags, flag{
105+ // name: "Name",
106+ // typeName: "Type",
107+ // isRequired: "Required",
108+ // defaultValue: "Default",
109+ // description: "Description",
110+ // })
111+ // updatedDefinedFlags = append(updatedDefinedFlags, rootCmd.getDefinedFlags()...)
112+
113+ // pDefinedFlags := paddedFlags(updatedDefinedFlags)
114+
115+ // if len(definedFlags) > 0 {
116+ // fmt.Println(" " + constHalfCrossRightLine + strings.Repeat(constHorizontalLine, constMaxLineLength-9))
117+ // fmt.Println(" " + constHalfCrossRightLine + strings.Repeat(constHorizontalLine, 10) + " global flags " + strings.Repeat(constHorizontalLine, constMaxLineLength-35))
118+ // fmt.Println(" " + constHalfCrossRightLine + strings.Repeat(constHorizontalLine, constMaxLineLength-9))
119+ // for _, definedFlag := range pDefinedFlags {
120+ // fmt.Println(fmt.Sprintf(" %s %s | %s | %s | %s | %s", constVerticalLine, definedFlag.name, definedFlag.typeName, definedFlag.isRequired, definedFlag.defaultValue, definedFlag.description))
121+ // }
122+ // }
123+ // }
124+
79125 if len (thisRef .Examples ) > 0 {
80- fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , 83 ))
126+ fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
81127 fmt .Print (fmt .Sprintf (" Examples " + constVerticalLine ))
82128 for i , example := range thisRef .Examples {
83129 if i == 0 {
@@ -86,11 +132,10 @@ func (thisRef *Command) showUsage() {
86132 fmt .Println (fmt .Sprintf (" %s %s" , constVerticalLine , example ))
87133 }
88134 }
89- fmt .Println (fmt .Sprintf (" " ) + constVerticalLine )
90135 }
91136
92137 if len (thisRef .subCommands ) > 1 {
93- fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , 83 ))
138+ fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constCrossLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
94139 fmt .Print (fmt .Sprintf (" Commands " + constVerticalLine ))
95140 firstOnePrinted := false
96141 pSubCommands := paddedCommands (thisRef .subCommands )
@@ -104,10 +149,9 @@ func (thisRef *Command) showUsage() {
104149 }
105150 }
106151 }
107- fmt .Println (fmt .Sprintf (" " ) + constVerticalLine )
108152 }
109153
110- fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constHalfCrossUpLine + strings .Repeat (constHorizontalLine , 83 ))
154+ fmt .Println (strings .Repeat (constHorizontalLine , 10 ) + constHalfCrossUpLine + strings .Repeat (constHorizontalLine , constMaxLineLength - 11 ))
111155 fmt .Println ()
112156}
113157
@@ -137,8 +181,13 @@ func paddedFlags(input []flag) []flag {
137181 }
138182
139183 output := []flag {}
140- for _ , definedFlag := range input {
141- definedFlagPaddedName := fmt .Sprintf ("%" + strconv .Itoa (- definedFlagNameMaxLength )+ "s" , flagPatterns [0 ]+ definedFlag .name )
184+ for i , definedFlag := range input {
185+ flagPrefix := ""
186+ if i != 0 {
187+ flagPrefix = flagPatterns [0 ]
188+ }
189+
190+ definedFlagPaddedName := fmt .Sprintf ("%" + strconv .Itoa (- definedFlagNameMaxLength )+ "s" , flagPrefix + definedFlag .name )
142191 definedFlagPaddedTypeName := fmt .Sprintf ("%" + strconv .Itoa (- definedFlagTypeNameMaxLength )+ "s" , definedFlag .typeName )
143192 definedFlagPaddedIsRequired := fmt .Sprintf ("%" + strconv .Itoa (- definedFlagIsRequiredMaxLength )+ "s" , definedFlag .isRequired )
144193 definedFlagPaddedDefaultValue := fmt .Sprintf ("%" + strconv .Itoa (- definedFlagDefaultValueMaxLength )+ "s" , definedFlag .defaultValue )
0 commit comments