SEBA-580 Add bash completion;
Add Git Dirty to version;
Add config comamnd
Change-Id: I847dc309a41d74d80e427106bcc839b8db3f9a2c
diff --git a/commands/models.go b/commands/models.go
index 92a7b2c..f7a1963 100644
--- a/commands/models.go
+++ b/commands/models.go
@@ -31,13 +31,15 @@
DEFAULT_MODEL_AVAILABLE_FORMAT = "{{ . }}"
)
+type ModelNameString string
+
type ModelList struct {
OutputOptions
ShowHidden bool `long:"showhidden" description:"Show hidden fields in default output"`
ShowFeedback bool `long:"showfeedback" description:"Show feedback fields in default output"`
ShowBookkeeping bool `long:"showbookkeeping" description:"Show bookkeeping fields in default output"`
Args struct {
- ModelName string
+ ModelName ModelNameString
} `positional-args:"yes" required:"yes"`
}
@@ -100,12 +102,12 @@
defer conn.Close()
- err = CheckModelName(descriptor, options.Args.ModelName)
+ err = CheckModelName(descriptor, string(options.Args.ModelName))
if err != nil {
return err
}
- method := "xos.xos/List" + options.Args.ModelName
+ method := "xos.xos/List" + string(options.Args.ModelName)
ctx, cancel := context.WithTimeout(context.Background(), GlobalConfig.Grpc.Timeout)
defer cancel()
@@ -195,3 +197,26 @@
GenerateOutput(&result)
return nil
}
+
+func (modelName *ModelNameString) Complete(match string) []flags.Completion {
+ conn, descriptor, err := InitReflectionClient()
+ if err != nil {
+ return nil
+ }
+
+ defer conn.Close()
+
+ models, err := GetModelNames(descriptor)
+ if err != nil {
+ return nil
+ }
+
+ list := make([]flags.Completion, 0)
+ for k := range models {
+ if strings.HasPrefix(k, match) {
+ list = append(list, flags.Completion{Item: k})
+ }
+ }
+
+ return list
+}