From 3f7db7d7007fc3e55f9f5dcfe0aede05e29c2a95 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sun, 19 Jan 2025 18:23:36 +0100 Subject: [PATCH] add -version flag & update help text --- config/cli.go | 38 +++++++++++++++++++++++++++++++------- main.go | 18 ++++++++++-------- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/config/cli.go b/config/cli.go index e940cb5..416e546 100644 --- a/config/cli.go +++ b/config/cli.go @@ -6,29 +6,53 @@ import ( "os" ) -var ( - filename string -) +var filename string +const applicationName = "traefik-etcd-advertiser" + +func setupHelpMessage() { + flag.Usage = func() { + helpMessage() + } +} + +func helpMessage() { + fmt.Fprintf(os.Stderr, "Usage:\n %s [OPTIONS]\n\n", applicationName) + fmt.Fprintf(os.Stderr, "Options:\n") + + flag.PrintDefaults() + fmt.Fprintf(os.Stderr, "\nHelp Options:\n -h, --help\tShow this help message") +} + +func printVersion(v string) { + fmt.Printf("Version: %s\n", v) +} + +func ParseCli(version string) (string, *bool) { + setupHelpMessage() -func ParseCli() (string, *bool) { flag.StringVar(&filename, "filename", "", "path of config") publish := flag.Bool("publish", false, "publish etcd messages") + versionFlag := flag.Bool("version", false, "print version information") flag.Parse() args := os.Args[1:] + if *versionFlag { + printVersion(version) + os.Exit(0) + } + if len(args) == 0 { // no command, exit with code 2 (invalid usage) - fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) + helpMessage() - flag.PrintDefaults() os.Exit(2) } if len(filename) < 1 { fmt.Fprintf(os.Stderr, "Filename required. Usage:\n") - flag.PrintDefaults() + helpMessage() os.Exit(2) } diff --git a/main.go b/main.go index 88dce8a..d6ee6c8 100644 --- a/main.go +++ b/main.go @@ -10,20 +10,16 @@ import ( "github.com/kevinmidboe/traefik-etcd-advertiser/generator" ) +var Version = "v0.1-dev" + func main() { + filename, publish := config.ParseCli(Version) + _, err := config.LoadConfig() if err != nil { log.Fatalf("Error from config loader: %s", err) } - filename, publish := config.ParseCli() - - // setup etcd client - etcdManager, err := etcd.NewClient() - if err != nil { - panic(err) - } - var packets []etcd.EtcdPacket if strings.Contains(filename, "docker-compose.yml") { @@ -58,6 +54,12 @@ func main() { log.Println(packet) if *publish { + // setup etcd client + etcdManager, err := etcd.NewClient() + if err != nil { + panic(err) + } + etcdManager.Put(packet.Key, packet.Value) } }