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 }