You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sh...@apache.org on 2025/08/25 09:02:32 UTC
(cloudstack-cloudmonkey) branch main updated: autocomplete: allow searching configuration name (#184)
This is an automated email from the ASF dual-hosted git repository.
shwstppr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack-cloudmonkey.git
The following commit(s) were added to refs/heads/main by this push:
new 94c1ef7 autocomplete: allow searching configuration name (#184)
94c1ef7 is described below
commit 94c1ef760e5c95bcd7fa4a76975029985537513a
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Mon Aug 25 14:32:28 2025 +0530
autocomplete: allow searching configuration name (#184)
Allows searching name for configurations for all *configuration(s) APIs.
---------
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
---
cli/completer.go | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/cli/completer.go b/cli/completer.go
index e23d187..986b7e9 100644
--- a/cli/completer.go
+++ b/cli/completer.go
@@ -28,6 +28,10 @@ import (
"github.com/apache/cloudstack-cloudmonkey/config"
)
+var nameSupportingApis = []string{
+ "configuration",
+}
+
func buildAPICacheMap(apiMap map[string][]*config.API) map[string][]*config.API {
for _, cmd := range cmd.AllCommands() {
verb := cmd.Name
@@ -232,14 +236,25 @@ func findAutocompleteAPI(arg *config.APIArg, apiFound *config.API, apiMap map[st
default:
// Heuristic: autocomplete for the arg for which a list<Arg without id/ids>s API exists
// For example, for zoneid arg, listZones API exists
- cutIdx := len(argName)
+ base := argName
if strings.HasSuffix(argName, "id") {
- cutIdx -= 2
+ base = strings.TrimSuffix(argName, "id")
} else if strings.HasSuffix(argName, "ids") {
- cutIdx -= 3
+ base = strings.TrimSuffix(argName, "ids")
+ } else if argName == "name" {
+ for _, noun := range nameSupportingApis {
+ if strings.HasPrefix(apiFound.Noun, noun) {
+ base = noun
+ break
+ }
+ }
+ }
+ // Handle common cases where base ends with a vowel and needs "es"
+ if strings.HasSuffix(base, "s") || strings.HasSuffix(base, "x") || strings.HasSuffix(base, "z") || strings.HasSuffix(base, "ch") || strings.HasSuffix(base, "sh") {
+ relatedNoun = base + "es"
} else {
+ relatedNoun = base + "s"
}
- relatedNoun = argName[:cutIdx] + "s"
}
config.Debug("Possible related noun for the arg: ", relatedNoun, " and type: ", arg.Type)