Support aliases for flags (#409)
Aliases are currently only supported for sub-commands, but they're useful for flags as well. E.g., when migrating from an old flag name to a new flag name, while still supporting the old value.
This commit is contained in:
committed by
GitHub
parent
30e84613fe
commit
fa9b636997
@@ -296,6 +296,13 @@ func buildField(k *Kong, node *Node, v reflect.Value, ft reflect.StructField, fv
|
||||
return failField(v, ft, "duplicate flag --%s", value.Name)
|
||||
}
|
||||
seenFlags["--"+value.Name] = true
|
||||
for _, alias := range tag.Aliases {
|
||||
aliasFlag := "--" + alias
|
||||
if seenFlags[aliasFlag] {
|
||||
return failField(v, ft, "duplicate flag %s", aliasFlag)
|
||||
}
|
||||
seenFlags[aliasFlag] = true
|
||||
}
|
||||
if tag.Short != 0 {
|
||||
if seenFlags["-"+string(tag.Short)] {
|
||||
return failField(v, ft, "duplicate short flag -%c", tag.Short)
|
||||
@@ -304,6 +311,7 @@ func buildField(k *Kong, node *Node, v reflect.Value, ft reflect.StructField, fv
|
||||
}
|
||||
flag := &Flag{
|
||||
Value: value,
|
||||
Aliases: tag.Aliases,
|
||||
Short: tag.Short,
|
||||
PlaceHolder: tag.PlaceHolder,
|
||||
Envs: tag.Envs,
|
||||
|
||||
Reference in New Issue
Block a user