From e144259a1990ed49dc5c7ea6afee0f8224164cb4 Mon Sep 17 00:00:00 2001 From: Matt Jaffee Date: Thu, 16 Mar 2017 11:23:59 -0500 Subject: [PATCH] make config flag global, and add global dry run flag config flag can be used by all subcommands. Dry run flag stops subcommand execution after parsing of config - nice for testing. --- cmd/root.go | 12 ++++++++++++ cmd/root_test.go | 1 - cmd/server.go | 1 - 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index c7a4464a8..12085938d 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -40,9 +40,21 @@ Build Time: ` + BuildTime + "\n", if err != nil { return err } + + // return "dry run" error if "dry-run" flag is set + if ret, err := cmd.Flags().GetBool("dry-run"); ret && err == nil { + if cmd.Parent() != nil { + return fmt.Errorf("dry run") + } else if err != nil { + return fmt.Errorf("problem getting dry-run flag: %v", err) + } + } + return nil }, } + rc.PersistentFlags().Bool("dry-run", false, "stop before executing") + rc.PersistentFlags().StringP("config", "c", "", "Configuration file to read from.") for _, subcomFn := range subcommandFns { rc.AddCommand(subcomFn(stdin, stdout, stderr)) } diff --git a/cmd/root_test.go b/cmd/root_test.go index a19db932a..b172301d5 100644 --- a/cmd/root_test.go +++ b/cmd/root_test.go @@ -89,7 +89,6 @@ func (ct commandTest) setupCommand(t *testing.T) *cobra.Command { // set up config file args/env ct.env["PILOSA_CONFIG"] = cfgFile.Name() - ct.args = append(ct.args[:1], append([]string{"--config=" + cfgFile.Name()}, ct.args[1:]...)...) // set up env for name, val := range ct.env { diff --git a/cmd/server.go b/cmd/server.go index f8d3860b6..223284c21 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -74,7 +74,6 @@ on the configured port.`, } flags := serveCmd.Flags() - flags.StringVarP(&Server.ConfigPath, "config", "c", "", "Configuration file to read from.") flags.StringVarP(&Server.Config.DataDir, "data-dir", "d", "~/.pilosa", "Directory to store pilosa data files.") flags.StringVarP(&Server.Config.Host, "bind", "", ":10101", "Default URI on which pilosa should listen.") flags.IntVarP(&Server.Config.Cluster.ReplicaN, "cluster.replicas", "", 1, "Number hosts each piece of data should be stored on.")