From b961c14a692e19cf7f46223eca49fa4129a7f760 Mon Sep 17 00:00:00 2001 From: Marc Pervaz Boocha Date: Sat, 4 Oct 2025 20:32:05 +0530 Subject: Updated kit --- main.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 3fe9001..bc74af0 100644 --- a/main.go +++ b/main.go @@ -3,8 +3,9 @@ package gopkgserver import ( "context" _ "embed" - "flag" "fmt" + "io/fs" + "strconv" "log/slog" "net/http" @@ -15,18 +16,48 @@ import ( httpServer "go.sudomsg.com/kit/http" "go.sudomsg.com/kit/logging" logHandler "go.sudomsg.com/kit/logging/http" + "go.sudomsg.com/kit/runner" ) +type ServerConfig struct { + Network httpServer.NetType `toml:"network"` + Address string `toml:"address"` + Mode string `toml:"mode"` +} + +func RawServerConfig(rawCfg []ServerConfig) ([]httpServer.ServerConfig, error) { + cfg := make([]httpServer.ServerConfig, 0, len(rawCfg)) + for _, srv := range rawCfg { + var mode uint64 + if srv.Mode != "" { + var err error + mode, err = strconv.ParseUint(srv.Mode, 8, 32) + if err != nil { + return nil, fmt.Errorf("failed to convert mode %s: %w", srv.Mode, err) + } + } + cfg = append(cfg, httpServer.ServerConfig{ + Network: srv.Network, + Address: srv.Address, + Mode: fs.FileMode(mode), + }) + } + return cfg, nil +} + type Config struct { - Server []httpServer.ServerConfig `toml:"server"` - Logging logging.LogConfig `toml:"logging"` - Repos map[string]repo.Repo `toml:"repo"` + Server []ServerConfig `toml:"server"` + Logging logging.LogConfig `toml:"logging"` + Repos map[string]repo.Repo `toml:"repo"` } -func Run(ctx context.Context, fs *flag.FlagSet, args []string) error { +func Run(ctx context.Context, fs *runner.CommandSet, args []string) error { var cfgFile string fs.StringVar(&cfgFile, "config", "config.toml", "Path to config file") - fs.Parse(args) + + if err := fs.Parse(args); err != nil{ + return err + } cfg, err := LoadConfig(cfgFile) if err != nil { @@ -47,9 +78,17 @@ func Run(ctx context.Context, fs *flag.FlagSet, args []string) error { mux.Handle("GET /robots.txt", Robot()) mux.Handle("GET /", h) - handler := logHandler.New(mux, nil) + handler := logHandler.New(mux) - lns, err := httpServer.OpenListeners(ctx, cfg.Server) + srvCfg, err := RawServerConfig(cfg.Server) + if err != nil { + return err + } + + lns, err := httpServer.OpenListeners(ctx, srvCfg) + if err != nil { + return err + } defer lns.CloseAll() return httpServer.RunHTTPServers(ctx, lns, handler) -- cgit v1.2.3-70-g09d2