From 703a9e72387673b13d92ca4596a9aeb3b248c5b7 Mon Sep 17 00:00:00 2001 From: Dustin Stiles Date: Mon, 24 Mar 2025 13:57:42 -0400 Subject: [PATCH] refactor(internal/peer): use flags instead of env vars --- internal/peer/peer.go | 47 ++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/internal/peer/peer.go b/internal/peer/peer.go index 62523f9..da3f2a8 100644 --- a/internal/peer/peer.go +++ b/internal/peer/peer.go @@ -5,6 +5,7 @@ import ( "crypto/ed25519" "encoding/base64" "errors" + "flag" "fmt" "io" "log/slog" @@ -71,35 +72,6 @@ func (c Conf) SlogLevel() slog.Level { } } -func loadConfigFromSystem(sys system.System) Conf { - var c Conf - - c.Host = sys.GetEnv(EnvHost) - if len(c.Host) == 0 { - c.Host = DefaultHost - } - - c.Port = sys.GetEnv(EnvPort) - if len(c.Port) == 0 { - c.Port = DefaultPort - } - - c.ConfigDir = sys.GetEnv(EnvConfigDir) - if len(c.ConfigDir) == 0 { - c.ConfigDir = DefaultConfigDir - } - - c.DataDir = sys.GetEnv(EnvDataDir) - if len(c.DataDir) == 0 { - c.DataDir = DefaultDataDir - } - - // defaults are handled by Conf.SlogLevel. - c.LogLevel = sys.GetEnv("DSFX_LOG_LEVEL") - - return c -} - // Peer ... type Peer struct { disk disk.Disk @@ -111,7 +83,22 @@ type Peer struct { // New ... func New(disk disk.Disk, system system.System) *Peer { - conf := loadConfigFromSystem(system) + flagConfig := flag.String("configDir", "/etc/dsfx/config", "Path to the configuration directory") + flagData := flag.String("dataDir", "/etc/dsfx/data", "Path to the data directory") + flagLogLevel := flag.String("logLevel", "info", "The log level (debug, info, warn, error)") + flagHost := flag.String("host", "0.0.0.0", "The host to bind to") + flagPort := flag.String("port", "8000", "The port to bind to") + + if !flag.Parsed() { + flag.Parse() + } + conf := Conf{ + LogLevel: *flagLogLevel, + ConfigDir: *flagConfig, + DataDir: *flagData, + Host: *flagHost, + Port: *flagPort, + } config := scoped.New(disk, conf.ConfigDir) storage := scoped.New(disk, conf.DataDir)