Browse code

sort flags with the same name in a consistent order

Docker-DCO-1.1-Signed-off-by: Jonathan Boulle <jonathanboulle@gmail.com> (github: jonboulle)

Jonathan Boulle authored on 2014/05/17 08:40:27
Showing 1 changed files
... ...
@@ -305,12 +305,10 @@ type flagSlice []string
305 305
 
306 306
 func (p flagSlice) Len() int { return len(p) }
307 307
 func (p flagSlice) Less(i, j int) bool {
308
-	pi, pj := strings.ToLower(p[i]), strings.ToLower(p[j])
309
-	if pi[0] == '-' {
310
-		pi = pi[1:]
311
-	}
312
-	if pj[0] == '-' {
313
-		pj = pj[1:]
308
+	pi, pj := strings.TrimPrefix(p[i], "-"), strings.TrimPrefix(p[j], "-")
309
+	lpi, lpj := strings.ToLower(pi), strings.ToLower(pj)
310
+	if lpi != lpj {
311
+		return lpi < lpj
314 312
 	}
315 313
 	return pi < pj
316 314
 }
... ...
@@ -443,8 +441,6 @@ func (f *FlagSet) PrintDefaults() {
443 443
 				}
444 444
 				fmt.Fprintln(writer, "\t", line)
445 445
 			}
446
-			//			start := fmt.Sprintf(format, strings.Join(names, ", -"), flag.DefValue)
447
-			//			fmt.Fprintln(f.out(), start, strings.Replace(flag.Usage, "\n", "\n"+strings.Repeat(" ", len(start)+1), -1))
448 446
 		}
449 447
 	})
450 448
 	writer.Flush()
... ...
@@ -833,14 +829,12 @@ func (f *FlagSet) parseOne() (bool, string, error) {
833 833
 	f.args = f.args[1:]
834 834
 	has_value := false
835 835
 	value := ""
836
-	for i := 1; i < len(name); i++ { // equals cannot be first
837
-		if name[i] == '=' {
838
-			value = trimQuotes(name[i+1:])
839
-			has_value = true
840
-			name = name[0:i]
841
-			break
842
-		}
836
+	if i := strings.Index(name, "="); i != -1 {
837
+		value = trimQuotes(name[i+1:])
838
+		has_value = true
839
+		name = name[:i]
843 840
 	}
841
+
844 842
 	m := f.formal
845 843
 	flag, alreadythere := m[name] // BUG
846 844
 	if !alreadythere {