]> xenbits.xensource.com Git - people/gdunlap/xsatool.git/commitdiff
main: Clean up command demuxer
authorGeorge Dunlap <george.dunlap@citrix.com>
Mon, 30 Oct 2017 12:33:25 +0000 (12:33 +0000)
committerGeorge Dunlap <george.dunlap@citrix.com>
Mon, 30 Oct 2017 12:33:25 +0000 (12:33 +0000)
Minimize changing of variables by setting loadConfig to 'true', and
only disabling it for "repo init", setting loadXSA to true for all
'xsanum' commands, and using 'switch' rather than 'else'.

This also fixes a bug where an unknown 'target' would cause xsatool to
dereference nil.

Signed-off-by: George Dunlap <george.dunlap@citrix.com>
main.go

diff --git a/main.go b/main.go
index 3c71c8476f1454164af63f9ced3d468d589b270c..ce90acc16d1aad1ef7327677570afb21ec494ebd 100644 (file)
--- a/main.go
+++ b/main.go
@@ -94,7 +94,7 @@ func XsaMain(args []string) int {
        var err error
        var xsanum int
 
-       loadConfig := false
+       loadConfig := true
        loadGlobal := false
        loadXSA := false
 
@@ -103,75 +103,61 @@ func XsaMain(args []string) int {
        args = args[3:]
 
        if xsanum, err = strconv.Atoi(tgt); err == nil {
+               // Always load the XSA, even for 'init'
+               loadXSA = true
                switch cmd {
                case "init":
                        main = MainInit
-                       loadConfig = true
                        loadGlobal = true
-                       loadXSA = true
                case "sync-patches":
                        main = MainSyncPatches
-                       loadConfig = true
-                       loadXSA = true
                case "backport":
                        main = MainBackport
-                       loadConfig = true
-                       loadXSA = true
                case "sync-branch":
                        main = MainSyncBranch
-                       loadConfig = true
-                       loadXSA = true
                case "test-apply":
                        main = MainTestApply
-                       loadConfig = true
-                       loadXSA = true
                case "test-build":
                        main = MainTestBuild
-                       loadConfig = true
-                       loadXSA = true
                case "test":
                        main = MainTest
-                       loadConfig = true
-                       loadXSA = true
                case "reset-base":
                        main = MainResetBase
-                       loadConfig = true
-                       loadXSA = true
                case "set-patches":
                        main = MainSetPatches
-                       loadConfig = true
-                       loadXSA = true
                default:
                        fmt.Printf("Unknown command: %s\n", cmd)
                        return 1
                }
-       } else if tgt == "repo" {
-               switch cmd {
-               case "init":
-                       main = MainRepoInit
-               case "update":
-                       main = MainRepoUpdate
-                       loadConfig = true
-               case "x":
-                       main = MainRepoX
-                       loadConfig = true
-               case "info":
-                       loadConfig = true
-                       main = MainRepoInfo
-               default:
-                       fmt.Printf("Unknown command: %s\n", cmd)
-                       return 1
-               }
-       } else if tgt == "global" {
-               switch cmd {
-               case "update":
-                       main = MainGlobalUpdate
-                       loadConfig = true
-               case "info":
-                       loadGlobal = true
-                       main = MainGlobalInfo
+       } else {
+               switch tgt {
+               case "repo":
+                       switch cmd {
+                       case "init":
+                               main = MainRepoInit
+                               loadConfig = false
+                       case "update":
+                               main = MainRepoUpdate
+                       case "x":
+                               main = MainRepoX
+                       case "info":
+                               main = MainRepoInfo
+                       default:
+                               fmt.Printf("Unknown command: %s\n", cmd)
+                               return 1
+                       }
+               case "global":
+                       switch cmd {
+                       case "update":
+                               main = MainGlobalUpdate
+                       case "info":
+                               main = MainGlobalInfo
+                       default:
+                               fmt.Printf("Unknown command: %s\n", cmd)
+                               return 1
+                       }
                default:
-                       fmt.Printf("Unknown command: %s\n", cmd)
+                       fmt.Printf("Unknown target: %s\n", tgt)
                        return 1
                }
        }