Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
| ... | ... |
@@ -286,9 +286,24 @@ type Flag struct {
|
| 286 | 286 |
DefValue string // default value (as text); for usage message |
| 287 | 287 |
} |
| 288 | 288 |
|
| 289 |
+type flagSlice []string |
|
| 290 |
+ |
|
| 291 |
+func (p flagSlice) Len() int { return len(p) }
|
|
| 292 |
+func (p flagSlice) Less(i, j int) bool {
|
|
| 293 |
+ pi, pj := p[i], p[j] |
|
| 294 |
+ if pi[0] == '-' {
|
|
| 295 |
+ pi = pi[1:] |
|
| 296 |
+ } |
|
| 297 |
+ if pj[0] == '-' {
|
|
| 298 |
+ pj = pj[1:] |
|
| 299 |
+ } |
|
| 300 |
+ return pi < pj |
|
| 301 |
+} |
|
| 302 |
+func (p flagSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
|
| 303 |
+ |
|
| 289 | 304 |
// sortFlags returns the flags as a slice in lexicographical sorted order. |
| 290 | 305 |
func sortFlags(flags map[string]*Flag) []*Flag {
|
| 291 |
- var list sort.StringSlice |
|
| 306 |
+ var list flagSlice |
|
| 292 | 307 |
for _, f := range flags {
|
| 293 | 308 |
fName := strings.TrimPrefix(f.Names[0], "#") |
| 294 | 309 |
if len(f.Names) == 1 {
|
| ... | ... |
@@ -307,7 +322,7 @@ func sortFlags(flags map[string]*Flag) []*Flag {
|
| 307 | 307 |
list = append(list, fName) |
| 308 | 308 |
} |
| 309 | 309 |
} |
| 310 |
- list.Sort() |
|
| 310 |
+ sort.Sort(list) |
|
| 311 | 311 |
result := make([]*Flag, len(list)) |
| 312 | 312 |
for i, name := range list {
|
| 313 | 313 |
result[i] = flags[name] |