From dece13a14f17fbed29520d2a20b6fce57b1afa54 Mon Sep 17 00:00:00 2001 From: Matronator <5470780+matronator@users.noreply.github.com> Date: Sat, 4 May 2024 01:53:53 +0200 Subject: [PATCH] update flags --- .goreleaser.yaml | 2 -- Cli.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ logger.go | 15 --------------- main.go | 9 +++++++-- 4 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 Cli.go diff --git a/.goreleaser.yaml b/.goreleaser.yaml index bce0e6f..08d10a5 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -28,8 +28,6 @@ builds: - darwin_amd64 - darwin_arm64 - windows_amd64 - ldflags: - - -s -w archives: - format: tar.gz diff --git a/Cli.go b/Cli.go new file mode 100644 index 0000000..a5a2dd9 --- /dev/null +++ b/Cli.go @@ -0,0 +1,50 @@ +package main + +import ( + "flag" + "log/slog" + "os" +) + +var version string + +func printVersion() { + if version == "" { + version = "development" + } + + println("amock version " + version) +} + +var DebugValue = false + +var versionFlag = flag.Bool("version", false, "Print the current version and exit") +var helpFlag = flag.Bool("help", false, "Print help message and exit") +var debugFlag = flag.Bool("debug", false, "Enable debug logging") + +func parseFlags() { + flag.BoolVar(versionFlag, "v", false, "Print the current version and exit") + flag.BoolVar(debugFlag, "d", false, "Enable debug logging") + flag.BoolVar(helpFlag, "h", false, "Print help message and exit") + DebugValue = *debugFlag + + flag.Parse() + + if *versionFlag { + printVersion() + os.Exit(0) + } + + if *helpFlag || len(flag.Args()) >= 0 && flag.Arg(0) == "help" { + println("Usage:\n\tamock [host:port] [flags]") + println("\n[host:port] - (optional) The host and port to bind the server to") + println("\nFlags: (optional)") + flag.PrintDefaults() + os.Exit(0) + } + + if DebugValue { + LogLevel.Set(slog.LevelDebug) + slog.SetLogLoggerLevel(LogLevel.Level()) + } +} diff --git a/logger.go b/logger.go index 0b29e0b..6006ed0 100644 --- a/logger.go +++ b/logger.go @@ -1,7 +1,6 @@ package main import ( - "flag" "log" "log/slog" "net/http" @@ -35,20 +34,6 @@ func Debug(msg string, args ...any) { slog.Debug(gchalk.Dim(msg), args...) } -var Verbose = false -var verboseFlag = flag.Bool("verbose", false, "Enable verbose logging") - -func InitLogger() { - flag.BoolVar(verboseFlag, "v", false, "Shorthand for `--verbose`") - flag.Parse() - Verbose = *verboseFlag - - if Verbose { - LogLevel.Set(slog.LevelDebug) - slog.SetLogLoggerLevel(LogLevel.Level()) - } -} - func LogRequest(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() diff --git a/main.go b/main.go index bf6d264..e65f916 100644 --- a/main.go +++ b/main.go @@ -48,7 +48,8 @@ var config *Config var db Database func init() { - InitLogger() + parseFlags() + Debug("Creating database from config...") config, _ = parseConfigFiles(ConfigPaths...) @@ -131,10 +132,14 @@ func StartServer() { for _, route := range Routes { _, err := fmt.Fprintln(writer, gchalk.Bold(RequestMethodColor(route.Method, false))+"\t"+url+route.Path+"\t"+gchalk.Dim("[entity: "+gchalk.WithItalic().Bold(strings.Split(route.Path, "/")[1])+"]")) - writer.Flush() if err != nil { Error("Error writing to tabwriter", "error", err) } + + err = writer.Flush() + if err != nil { + Error("Error flushing", "error", err) + } } fmt.Println("")