Check PromptKit selector collisions against installed flags

This commit is contained in:
2026-10-07 16:51:15 +00:00
parent c26d279b4f
commit a21dd3d89e
4 changed files with 53 additions and 3 deletions

View File

@@ -128,6 +128,10 @@ func RegisterPromptKit[C any](app *App, suite PromptKitSuite[C]) error {
func normalizePromptKitSuite[C any](suite PromptKitSuite[C]) (PromptKitSuite[C], error) {
normalized := suite
normalized.Selectors = append([]Selector[C](nil), suite.Selectors...)
standardNames := map[string]bool{"help": true}
for _, flag := range promptKitInputFlags(PromptKitSuite[C]{}, suite.InspectPrompt != nil) {
standardNames[flag.binding.meta.Name] = true
}
seenNames := make(map[string]struct{}, len(normalized.Selectors))
seenShorts := make(map[string]struct{}, len(normalized.Selectors))
for i, selector := range normalized.Selectors {
@@ -139,8 +143,7 @@ func normalizePromptKitSuite[C any](suite PromptKitSuite[C]) (PromptKitSuite[C],
if !validFlagName(meta.Name) {
return PromptKitSuite[C]{}, fmt.Errorf("PromptKit selector flag name %q is invalid", meta.Name)
}
switch meta.Name {
case "config", "overlay", "scope", "format", "version", "help":
if standardNames[meta.Name] {
return PromptKitSuite[C]{}, fmt.Errorf("PromptKit selector flag --%s conflicts with a standard flag", meta.Name)
}
if meta.Short == "h" {