From a707308b883d29e8b97e13067ca87da1ed7c3937 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Sun, 27 Mar 2016 18:29:47 +0200 Subject: [PATCH] Use rconfig package for CLI argument parsing --- config/config.go | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/config/config.go b/config/config.go index a09fb43..6eb0d9b 100644 --- a/config/config.go +++ b/config/config.go @@ -1,49 +1,35 @@ package config // import "github.com/Luzifer/mondash/config" import ( - "fmt" "log" "net/url" - "os" - "strings" - "github.com/spf13/pflag" + "github.com/Luzifer/rconfig" ) var storageDrivers = []string{"s3", "file"} // Config is a storage struct for configuration parameters type Config struct { - Storage string - BaseURL string - APIToken string + Storage string `flag:"storage" default:"s3" description:"Storage engine to use"` + BaseURL string `flag:"baseurl" env:"BASE_URL" description:" "The Base-URL the application is running on for example https://mondash.org"` + APIToken string `flag:"api-token" env:"API_TOKEN" description:"API Token used for the /welcome dashboard (you can choose your own)"` - Listen string + Listen string `flag:"listen" default:":3000" description:"Address to listen on"` S3 struct { - Bucket string + Bucket string `flag:"s3Bucket" env:"S3Bucket" "Bucket to use for S3 storage"` } FileStorage struct { - Directory string + Directory string `flag:"fileDirectory" default:"./" description:"Directory to use for plain text storage"` } } // Load parses arguments / ENV variable to load configuration func Load() *Config { cfg := &Config{} - pflag.StringVar(&cfg.Storage, "storage", "s3", fmt.Sprintf("Storage engine to use (%s)", strings.Join(storageDrivers, ", "))) - pflag.StringVar(&cfg.BaseURL, "baseurl", os.Getenv("BASE_URL"), "The Base-URL the application is running on for example https://mondash.org") - pflag.StringVar(&cfg.APIToken, "api-token", os.Getenv("API_TOKEN"), "API Token used for the /welcome dashboard (you can choose your own)") - pflag.StringVar(&cfg.Listen, "listen", ":3000", "Address to listen on") - - // S3 - pflag.StringVar(&cfg.S3.Bucket, "s3Bucket", os.Getenv("S3Bucket"), "Bucket to use for S3 storage") - - // FileStorage - pflag.StringVar(&cfg.FileStorage.Directory, "fileDirectory", "./", "Directory to use for plain text storage") - - pflag.Parse() + rconfig.Parse(cfg) return cfg }