mirror of
https://github.com/nikdoof/aaisp-chaos.git
synced 2025-12-13 06:42:16 +00:00
Improve flag usage, check for required env vars
Switch to a custom FlagSet and add a nicer usage message. Check for the required CHAOS_CONTROL_LOGIN and CHAOS_CONTROL_PASSWORD environment variables and exit with an error if neither is set. The usage string also mentions that both must be set.
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@@ -109,6 +110,24 @@ func loggingMiddleware(log zerolog.Logger) func(next http.Handler) http.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func usage(fs *flag.FlagSet) func() {
|
||||||
|
return func() {
|
||||||
|
o := fs.Output()
|
||||||
|
fmt.Fprintf(o, "Usage:\n %s ", os.Args[0])
|
||||||
|
fs.VisitAll(func(f *flag.Flag) {
|
||||||
|
s := fmt.Sprintf(" [-%s", f.Name)
|
||||||
|
if arg, _ := flag.UnquoteUsage(f); len(arg) > 0 {
|
||||||
|
s += " " + arg
|
||||||
|
}
|
||||||
|
s += "]"
|
||||||
|
fmt.Fprint(o, s)
|
||||||
|
})
|
||||||
|
fmt.Fprint(o, "\n\nOptions:\n")
|
||||||
|
fs.PrintDefaults()
|
||||||
|
fmt.Fprint(o, "\nThe environment variables CHAOS_CONTROL_LOGIN and CHAOS_CONTROL_PASSWORD must be set.\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func setupLogger(level, output string) zerolog.Logger {
|
func setupLogger(level, output string) zerolog.Logger {
|
||||||
ll, err := zerolog.ParseLevel(level)
|
ll, err := zerolog.ParseLevel(level)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -126,19 +145,34 @@ func setupLogger(level, output string) zerolog.Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
fs := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
|
||||||
|
fs.Usage = usage(fs)
|
||||||
var (
|
var (
|
||||||
listen = flag.String("listen", ":8080", "listen `address`")
|
listen = fs.String("listen", ":8080", "listen `address`")
|
||||||
logLevel = flag.String("log.level", "info", "log `level`")
|
logLevel = fs.String("log.level", "info", "log `level`")
|
||||||
logOutput = flag.String("log.output", "json", "log output style (json, console)")
|
logOutput = fs.String("log.output", "json", "log output `style` (json, console)")
|
||||||
)
|
)
|
||||||
flag.Parse()
|
fs.Parse(os.Args[1:])
|
||||||
|
|
||||||
log := setupLogger(*logLevel, *logOutput)
|
log := setupLogger(*logLevel, *logOutput)
|
||||||
|
|
||||||
|
var (
|
||||||
|
controlLogin = os.Getenv("CHAOS_CONTROL_LOGIN")
|
||||||
|
controlPassword = os.Getenv("CHAOS_CONTROL_PASSWORD")
|
||||||
|
)
|
||||||
|
switch {
|
||||||
|
case controlLogin == "" && controlPassword == "":
|
||||||
|
log.Fatal().Msg("CHAOS_CONTROL_LOGIN and CHAOS_CONTROL_PASSWORD must be set in the environment")
|
||||||
|
case controlLogin == "":
|
||||||
|
log.Fatal().Msg("CHAOS_CONTROL_LOGIN is not set")
|
||||||
|
case controlPassword == "":
|
||||||
|
log.Fatal().Msg("CHAOS_CONTROL_PASSWORD is not set")
|
||||||
|
}
|
||||||
|
|
||||||
collector := broadbandCollector{
|
collector := broadbandCollector{
|
||||||
API: chaos.New(chaos.Auth{
|
API: chaos.New(chaos.Auth{
|
||||||
ControlLogin: os.Getenv("CHAOS_CONTROL_LOGIN"),
|
ControlLogin: controlLogin,
|
||||||
ControlPassword: os.Getenv("CHAOS_CONTROL_PASSWORD"),
|
ControlPassword: controlPassword,
|
||||||
}),
|
}),
|
||||||
log: log,
|
log: log,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user