commit 6d09a7b71dce8b8a3b4ef5a4e54dee97438d39b5
parent 91695c06d4b1f860717d1ae693fd95472f64e8c3
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sat, 26 Apr 2025 13:29:43 +0200
improve cli argument parsing
Diffstat:
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=