You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
508 B
Go
30 lines
508 B
Go
package components
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
"go-micro.dev/v4/logger"
|
|
)
|
|
|
|
func FilterDuplicateFlags(flags []cli.Flag) []cli.Flag {
|
|
flagMap := make(map[string]cli.Flag, 0)
|
|
|
|
for _, f := range flags {
|
|
if _, ok := flagMap[f.Names()[0]]; !ok {
|
|
flagMap[f.Names()[0]] = f
|
|
} else {
|
|
logger.Warn(fmt.Sprintf("Duplicated flag '%s' found", f.Names()[0]))
|
|
}
|
|
}
|
|
|
|
result := make([]cli.Flag, len(flagMap))
|
|
i := 0
|
|
for _, f := range flagMap {
|
|
result[i] = f
|
|
i += 1
|
|
}
|
|
|
|
return result
|
|
}
|