| 103 | } |
| 104 | |
| 105 | func suggestFlag(flags []Flag, provided string, hideHelp bool) string { |
| 106 | distance := 0.0 |
| 107 | suggestion := "" |
| 108 | |
| 109 | for _, flag := range flags { |
| 110 | flagNames := flag.Names() |
| 111 | if !hideHelp && HelpFlag != nil { |
| 112 | flagNames = append(flagNames, HelpFlag.Names()...) |
| 113 | } |
| 114 | for _, name := range flagNames { |
| 115 | newDistance := jaroWinkler(name, provided) |
| 116 | if newDistance > distance { |
| 117 | distance = newDistance |
| 118 | suggestion = name |
| 119 | } |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | if len(suggestion) == 1 { |
| 124 | suggestion = "-" + suggestion |
| 125 | } else if len(suggestion) > 1 { |
| 126 | suggestion = "--" + suggestion |
| 127 | } |
| 128 | |
| 129 | return suggestion |
| 130 | } |
| 131 | |
| 132 | // suggestCommand takes a list of commands and a provided string to suggest a |
| 133 | // command name |