This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cloudstack-cloudmonkey.git
The following commit(s) were added to refs/heads/master by this push:
new 01c1f1f cli: implement heuristics based completer as a fallback
01c1f1f is described below
commit 01c1f1f1473fe51d71e7e77915c783b96c981b11
Author: Rohit Yadav <[email protected]>
AuthorDate: Thu Oct 25 11:39:37 2018 +0530
cli: implement heuristics based completer as a fallback
This implements a API heuristics based options API arg completer based
on the related API name for an arg, or if a list API exists whose name
contains the arg name.
Signed-off-by: Rohit Yadav <[email protected]>
---
cli/completer.go | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/cli/completer.go b/cli/completer.go
index 06bd29b..29c944f 100644
--- a/cli/completer.go
+++ b/cli/completer.go
@@ -18,7 +18,6 @@
package cli
import (
- "fmt"
"sort"
"strings"
@@ -152,6 +151,22 @@ func completer(in prompt.Document) []prompt.Suggest {
break
}
}
+ if optionsAPI == nil {
+ if
len(argFound.Related) > 0 {
+ apiCache :=
cfg.GetCache()
+ relatedAPIName
:= strings.ToLower(argFound.Related[0])
+ if
apiCache[relatedAPIName] != nil {
+
optionsAPI = apiCache[relatedAPIName]
+ }
+ } else {
+ for _, related
:= range apiMap["list"] {
+ if
strings.Contains(related.Noun, relatedNoun) {
+
optionsAPI = related
+
break
+ }
+ }
+ }
+ }
if optionsAPI != nil {
r :=
cmd.NewRequest(nil, cfg, nil)
optionsArgs :=
[]string{"listall=true"}
@@ -160,7 +175,6 @@ func completer(in prompt.Document) []prompt.Suggest {
}
if cachedResponse ==
nil {
- fmt.Println("")
spinner :=
cfg.StartSpinner("fetching options, please wait...")
cachedResponse,
_ = cmd.NewAPIRequest(r, optionsAPI.Name, optionsArgs, false)
cfg.StopSpinner(spinner)
@@ -186,7 +200,7 @@ func completer(in prompt.Document) []prompt.Suggest {
} else if resource["username"] != nil {
opt.Description = resource["username"].(string)
}
-
if opt.Text == "" {
+
if argFound.Type == "string" {
opt.Text = opt.Description
}
s = append(s, opt)
