diff --git a/src/config/cmdoptions.go b/src/config/cmdoptions.go index 105bdbff8..3bf4f55f1 100644 --- a/src/config/cmdoptions.go +++ b/src/config/cmdoptions.go @@ -72,7 +72,6 @@ type Options struct { Measurements MeasurementOpts `group:"Measurements"` Logging LoggingOpts `group:"Logging"` WebUI WebUIOpts `group:"WebUI"` - Version bool `long:"version" mapstructure:"version" description:"Show Git build version and exit" env:"PW3_VERSION"` Ping bool `long:"ping" mapstructure:"ping" description:"Try to connect to all configured DB-s, report errors and then exit" env:"PW3_PING"` Help bool } @@ -86,13 +85,13 @@ func New(writer io.Writer) (*Options, error) { if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp { cmdOpts.Help = true } + if !flags.WroteHelp(err) { + parser.WriteHelp(writer) + } } if err == nil { err = validateConfig(cmdOpts) } - if !flags.WroteHelp(err) { - parser.WriteHelp(writer) - } return cmdOpts, err } @@ -101,11 +100,6 @@ func (c Options) Verbose() bool { return c.Logging.LogLevel == "debug" } -// VersionOnly returns true if the `--version` is the only argument -func (c Options) VersionOnly() bool { - return len(os.Args) == 2 && c.Version -} - func (c Options) GetConfigKind() (_ Kind, err error) { if _, err := pgx.ParseConfig(c.Sources.Config); err == nil { return Kind(ConfigPgURL), nil @@ -121,9 +115,6 @@ func (c Options) GetConfigKind() (_ Kind, err error) { } func validateConfig(c *Options) error { - if c.Sources.Config == "" && !c.VersionOnly() { - return errors.New("--config was not specified") - } if c.Sources.Refresh <= 1 { return errors.New("--servers-refresh-loop-seconds must be greater than 1") } diff --git a/src/config/cmdoptions_test.go b/src/config/cmdoptions_test.go index e35006898..c158f7299 100644 --- a/src/config/cmdoptions_test.go +++ b/src/config/cmdoptions_test.go @@ -29,12 +29,13 @@ func TestParseFail(t *testing.T) { func TestParseSuccess(t *testing.T) { tests := [][]string{ - {0: "go-test", "--version"}, + {0: "go-test", "--help"}, } for _, d := range tests { os.Args = d - _, err := New(nil) - assert.NoError(t, err) + c, err := New(nil) + assert.True(t, c.Help) + assert.Error(t, err) } } diff --git a/src/main.go b/src/main.go index 58a6da87e..b07bca6b3 100644 --- a/src/main.go +++ b/src/main.go @@ -114,14 +114,11 @@ func main() { defer cancel() if opts, err = config.New(os.Stdout); err != nil { + printVersion() + fmt.Println(err) if !opts.Help { exitCode.Store(ExitCodeConfigError) } - fmt.Println(err) - return - } - if opts.VersionOnly() || opts.Help { - printVersion() return } logger = log.Init(opts.Logging)