diff --git a/go.mod b/go.mod index b305b94..e600270 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.15 require ( github.com/gemnasium/logrus-graylog-hook/v3 v3.0.2 github.com/go-ldap/ldap v3.0.3+incompatible + github.com/karrick/golf v1.4.0 github.com/sirupsen/logrus v1.7.0 gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect gopkg.in/yaml.v2 v2.2.2 diff --git a/main.go b/main.go index e5dda18..1850c07 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,11 @@ package main import ( - "flag" "io/ioutil" "os" lrh_gl "github.com/gemnasium/logrus-graylog-hook/v3" + "github.com/karrick/golf" "github.com/sirupsen/logrus" lrh_wr "github.com/sirupsen/logrus/hooks/writer" ) @@ -35,14 +35,22 @@ var ( // Parse command line options. func parseCommandLine() cliFlags { + var help bool flags := cliFlags{} - flag.StringVar(&flags.cfgFile, "c", "graylog-groups.yml", "Configuration file.") - flag.StringVar(&flags.instance, "i", "", "Instance identifier") - flag.BoolVar(&flags.quiet, "q", false, "Quiet mode") - flag.StringVar(&flags.logLevel, "L", "", "Log level") - flag.StringVar(&flags.logFile, "log-file", "", "Log file") - flag.StringVar(&flags.logGraylog, "log-graylog", "", "Log to Graylog server (format: :)") - flag.Parse() + + golf.StringVarP(&flags.cfgFile, 'c', "config", "./graylog-groups.yml", "Set the configuration file.") + golf.StringVarP(&flags.logFile, 'f', "log-file", "", "Log file.") + golf.StringVarP(&flags.logGraylog, 'g', "log-graylog", "", "Log to Graylog server (format: :).") + golf.BoolVarP(&help, 'h', "help", false, "Display command line help and exit.") + golf.StringVarP(&flags.instance, 'i', "instance", "", "Specify an instance identifier.") + golf.StringVarP(&flags.logLevel, 'L', "log-level", "INFO", "Log level to use.") + golf.BoolVarP(&flags.quiet, 'q', "quiet", false, "Quiet mode; prevents logging to stderr.") + + golf.Parse() + if help { + golf.Usage() + os.Exit(0) + } return flags }