taler-mailbox

Service for asynchronous wallet-to-wallet payment messages
Log | Files | Refs | Submodules | README | LICENSE

commit 6d09a7b71dce8b8a3b4ef5a4e54dee97438d39b5
parent 91695c06d4b1f860717d1ae693fd95472f64e8c3
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sat, 26 Apr 2025 13:29:43 +0200

improve cli argument parsing

Diffstat:
Mcmd/mailbox-server/main.go | 37++++++++++++++++++++++++++++---------
Mgo.mod | 1+
Mgo.sum | 2++
3 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/cmd/mailbox-server/main.go b/cmd/mailbox-server/main.go @@ -28,29 +28,48 @@ import ( "os" "github.com/schanzen/taler-go/pkg/merchant" + "rsc.io/getopt" mailbox "taler.net/taler-mailbox/pkg/rest" ) var ( - m mailbox.Mailbox - version string + m mailbox.Mailbox + version string mailboxdatahome string + verbose bool ) func handleRequests(m *mailbox.Mailbox) { log.Fatal(http.ListenAndServe(m.Cfg.Ini.Section("mailbox").Key("bind_to").MustString("localhost:11000"), m.Router)) } +func printHelp() { + fmt.Print("taler-mailbox\n\n") + getopt.PrintDefaults() + fmt.Print("\nReport bugs to gnunet-developers@gnu.org.\n", + "Home page: https://taler.net\n", + "General help using GNU software: http://www.gnu.org/gethelp/\n") +} + func main() { - var cfgFlag = flag.String("c", "", "Configuration file to use") + var cfgFlag = flag.String("c", "mailbox.conf", "Configuration file to use") + getopt.Alias("c", "config") + // FIXME use flags + _ = flag.String("L", "INFO", "Log level to use. DEBUG, INFO, WARNING or ERROR") + getopt.Alias("L", "loglevel") + var verboseFlag = flag.Bool("v", false, "Verbose") + getopt.Alias("v", "verbose") + var helpFlag = flag.Bool("h", false, "Print help") + getopt.Alias("h", "help") - flag.Parse() - cfgfile := "mailbox.conf" - if len(*cfgFlag) != 0 { - cfgfile = *cfgFlag + getopt.Parse() + if *helpFlag { + printHelp() + return } + verbose = *verboseFlag m := mailbox.Mailbox{} - iniCfg, err := ini.Load(cfgfile) + iniCfg, err := ini.Load(*cfgFlag) if err != nil { log.Printf("Failed to read config: %v", err) os.Exit(1) @@ -67,7 +86,7 @@ func main() { merch := merchant.NewMerchant(merchURL, merchToken) m.Initialize(mailbox.MailboxConfig{ Version: version, - Datahome: mailboxdatahome, + Datahome: mailboxdatahome, Db: db, Ini: iniCfg, Merchant: merch}) diff --git a/go.mod b/go.mod @@ -10,6 +10,7 @@ require ( gorm.io/driver/postgres v1.5.11 gorm.io/driver/sqlite v1.5.7 gorm.io/gorm v1.26.0 + rsc.io/getopt v0.0.0-20170811000552-20be20937449 ) require ( diff --git a/go.sum b/go.sum @@ -49,3 +49,5 @@ gorm.io/driver/sqlite v1.5.7 h1:8NvsrhP0ifM7LX9G4zPB97NwovUakUxc+2V2uuf3Z1I= gorm.io/driver/sqlite v1.5.7/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= gorm.io/gorm v1.26.0 h1:9lqQVPG5aNNS6AyHdRiwScAVnXHg/L/Srzx55G5fOgs= gorm.io/gorm v1.26.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +rsc.io/getopt v0.0.0-20170811000552-20be20937449 h1:UukjJOsjQH0DIuyyrcod6CXHS6cdaMMuJmrt+SN1j4A= +rsc.io/getopt v0.0.0-20170811000552-20be20937449/go.mod h1:dhCdeqAxkyt5u3/sKRkUXuHaMXUu1Pt13GTQAM2xnig=