fix: bad arg recommendation logic

Signed-off-by: cpendery <cpendery@vt.edu>
This commit is contained in:
cpendery
2023-09-12 21:20:09 -04:00
parent 83af2b196b
commit 83f7b5a8a6
+13 -17
View File
@@ -84,25 +84,23 @@ func getPersistentTokens(tokens []model.ProcessedToken) []model.ProcessedToken {
return persistentTokens
}
func getSubcommandDrivenRecommendation(spec model.Subcommand, persistentOptions []model.Option, partialCmd *commandToken, onlyRecommendSubcommands bool, noSubcommandOptionRecommendations bool, acceptedTokens []model.ProcessedToken) model.TermSuggestions {
func getSubcommandDrivenRecommendation(spec model.Subcommand, persistentOptions []model.Option, partialCmd *commandToken, argsDepleted bool, argsFromSubcommand bool, acceptedTokens []model.ProcessedToken) model.TermSuggestions {
suggestions := []model.TermSuggestion{}
allOptions := append(spec.Options, persistentOptions...)
if onlyRecommendSubcommands {
if !noSubcommandOptionRecommendations {
getSubcommandDrivenRecommendations(spec, &suggestions)
if argsDepleted && argsFromSubcommand {
return model.TermSuggestions{
Suggestions: suggestions,
}
} else {
if len(spec.Args) != 0 {
activeArg := spec.Args[0]
getSuggestionDrivenRecommendations(activeArg.Suggestions, &suggestions)
getTemplateDrivenRecommendations(activeArg.Templates, &suggestions)
}
if !noSubcommandOptionRecommendations {
getSubcommandDrivenRecommendations(spec, &suggestions)
getOptionDrivenRecommendations(allOptions, &suggestions)
}
}
if len(spec.Args) != 0 {
activeArg := spec.Args[0]
getSuggestionDrivenRecommendations(activeArg.Suggestions, &suggestions)
getTemplateDrivenRecommendations(activeArg.Templates, &suggestions)
}
if !argsFromSubcommand {
getSubcommandDrivenRecommendations(spec, &suggestions)
getOptionDrivenRecommendations(allOptions, &suggestions)
}
removeDuplicateRecommendation(&suggestions, acceptedTokens)
@@ -154,8 +152,6 @@ func getArgDrivenRecommendation(args []model.Arg, spec model.Subcommand, persist
}
}
// argsUsed
func handleSubcommand(tokens []commandToken, spec model.Subcommand, persistentOptions []model.Option, argsDepleted, argsUsed bool, acceptedTokens []model.ProcessedToken) (suggestions model.TermSuggestions) {
if len(tokens) == 0 {
return getSubcommandDrivenRecommendation(spec, persistentOptions, nil, argsDepleted, argsUsed, acceptedTokens)