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

commit 783a0996c3277c6ef684e66e76b2e30195c0286d
Author: Rohit Yadav <[email protected]>
AuthorDate: Mon Oct 22 00:45:20 2018 +0530

    cmk: implement command line flags support and usage doc
    
    Signed-off-by: Rohit Yadav <[email protected]>
---
 cmd/command.go | 11 ++++++++---
 cmd/set.go     |  2 +-
 cmk.go         | 32 ++++++++++++++++++++++++++++++--
 3 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/cmd/command.go b/cmd/command.go
index 179dd74..5788ade 100644
--- a/cmd/command.go
+++ b/cmd/command.go
@@ -56,14 +56,19 @@ func AddCommand(cmd *Command) {
 func PrintUsage() {
        commandHelp := ""
        for _, cmd := range commands {
-               commandHelp += fmt.Sprintf("%s\t\t%s\n", cmd.Name, cmd.Help)
+               commandHelp += fmt.Sprintf("  %-8s  %s\n", cmd.Name, cmd.Help)
        }
-       fmt.Printf(`Usage: cmk [options] [commands]
+       fmt.Printf(`usage: cmk [flags] [commands|apis] [-h]
 
 CloudMonkey (cmk) 🐵 is a command line interface for Apache CloudStack.
 
+Allowed flags:
+  -h        Show this help message or API doc when specified after an API
+  -v        Print version
+  -o        API response output format: json, text, table, column, csv
+  -p        Server profile
+
 Default commands:
 %s
-Try cmk [help] or cmk [action api] -h
 `, commandHelp)
 }
diff --git a/cmd/set.go b/cmd/set.go
index 4bc29e3..c500190 100644
--- a/cmd/set.go
+++ b/cmd/set.go
@@ -47,7 +47,7 @@ func init() {
                        }
                        subCommand := r.Args[0]
                        value := strings.Join(r.Args[1:], " ")
-                       r.Config.UpdateConfig(subCommand, value)
+                       r.Config.UpdateConfig(subCommand, value, true)
 
                        if subCommand == "profile" && r.Config.HasShell {
                                fmt.Println("Loaded server profile:", 
r.Config.Core.ProfileName)
diff --git a/cmk.go b/cmk.go
index 7175a2d..19d50b2 100644
--- a/cmk.go
+++ b/cmk.go
@@ -18,16 +18,44 @@
 package main
 
 import (
+       "flag"
        "fmt"
        "os"
 
        "github.com/apache/cloudstack-cloudmonkey/cli"
+       "github.com/apache/cloudstack-cloudmonkey/cmd"
        "github.com/apache/cloudstack-cloudmonkey/config"
 )
 
+func init() {
+       flag.Usage = func() {
+               cmd.PrintUsage()
+       }
+}
+
 func main() {
-       args := os.Args[1:]
-       cli.SetConfig(config.NewConfig())
+       outputFormat := flag.String("o", "", "output format: json, text, table, 
column, csv")
+       showVersion := flag.Bool("v", false, "show version")
+       profile := flag.String("p", "", "server profile")
+       flag.Parse()
+
+       cfg := config.NewConfig()
+
+       if *showVersion {
+               fmt.Println(cfg.Name(), cfg.Version())
+               os.Exit(0)
+       }
+
+       if *outputFormat != "" {
+               cfg.UpdateConfig("output", *outputFormat, false)
+       }
+
+       if *profile != "" {
+               cfg.UpdateConfig("profile", *profile, false)
+       }
+
+       cli.SetConfig(cfg)
+       args := flag.Args()
        if len(args) > 0 {
                if err := cli.ExecCmd(args); err != nil {
                        fmt.Println("🙈 Error:", err)

Reply via email to