minor polish

This commit is contained in:
djmil 2026-04-01 19:18:23 +00:00
parent 3403a8e168
commit 1ebdf085e5
2 changed files with 15 additions and 7 deletions

View File

@ -6,6 +6,7 @@ package main
import ( import (
"fmt" "fmt"
"os" "os"
"path/filepath"
"gitea.djmil.dev/djmil/go-template/internal/config" "gitea.djmil.dev/djmil/go-template/internal/config"
"gitea.djmil.dev/djmil/go-template/internal/greeter" "gitea.djmil.dev/djmil/go-template/internal/greeter"
@ -38,7 +39,7 @@ func run() (err error) {
} }
log.WithFields(map[string]any{ log.WithFields(map[string]any{
"app": cfg.App.Name, "app": filepath.Base(os.Args[0]),
"env": cfg.App.Env, "env": cfg.App.Env,
}).Info("starting up") }).Info("starting up")
@ -46,7 +47,7 @@ func run() (err error) {
var greetSvc greeter.Greeter = greeter.New(log) var greetSvc greeter.Greeter = greeter.New(log)
// ── Example usage ───────────────────────────────────────────────────────── // ── Example usage ─────────────────────────────────────────────────────────
msg := greetSvc.Greet("").Expect("greeting") msg := greetSvc.Greet(cfg.Greeter.Name).Expect("greeting")
log.WithField("message", msg).Info("greeting complete") log.WithField("message", msg).Info("greeting complete")

View File

@ -17,11 +17,11 @@ import (
type Config struct { type Config struct {
App AppConfig App AppConfig
Logger LoggerConfig Logger LoggerConfig
Greeter GreeterConfig
} }
// AppConfig holds generic application settings. // AppConfig holds generic application settings.
type AppConfig struct { type AppConfig struct {
Name string
Port int Port int
Env string // dev | staging | prod Env string // dev | staging | prod
} }
@ -31,10 +31,15 @@ type LoggerConfig struct {
Level string // debug | info | warn | error Level string // debug | info | warn | error
} }
// Greeter config for internal/greeter/Service.
type GreeterConfig struct {
Name string
}
// Load parses command-line flags and returns a Config. // Load parses command-line flags and returns a Config.
// Call this once at startup before any other flag parsing. // Call this once at startup before any other flag parsing.
func Load() *Config { func Load() *Config {
name := flag.String("name", "go-template", "application name") name := flag.String("name", "Gopher", "application name")
port := flag.Int("port", 8080, "listen port") port := flag.Int("port", 8080, "listen port")
env := flag.String("env", "dev", "environment: dev | staging | prod") env := flag.String("env", "dev", "environment: dev | staging | prod")
level := flag.String("log-level", "info", "log level: debug | info | warn | error") level := flag.String("log-level", "info", "log level: debug | info | warn | error")
@ -43,12 +48,14 @@ func Load() *Config {
return &Config{ return &Config{
App: AppConfig{ App: AppConfig{
Name: *name,
Port: *port, Port: *port,
Env: *env, Env: *env,
}, },
Logger: LoggerConfig{ Logger: LoggerConfig{
Level: *level, Level: *level,
}, },
Greeter: GreeterConfig{
Name: *name,
},
} }
} }