36 lines
765 B
Go
36 lines
765 B
Go
package middleman
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
var aliases = make(map[string]map[string]struct{})
|
|
|
|
func PluckAlias(parent, flag string) []string {
|
|
if _, ok := aliases[parent]; !ok {
|
|
aliases[parent] = make(map[string]struct{})
|
|
}
|
|
var alias string
|
|
for word := range strings.SplitAfterSeq(flag, "-") {
|
|
alias = word[:1]
|
|
if alias == "h" {
|
|
alias = "H"
|
|
if _, ok := aliases[parent][alias]; !ok {
|
|
aliases[parent][alias] = struct{}{}
|
|
return []string{alias}
|
|
}
|
|
}
|
|
if _, ok := aliases[parent][alias]; !ok {
|
|
aliases[parent][alias] = struct{}{}
|
|
return []string{alias}
|
|
} else {
|
|
alias = strings.ToUpper(alias)
|
|
if _, ok = aliases[parent][alias]; !ok {
|
|
aliases[parent][alias] = struct{}{}
|
|
return []string{alias}
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|