From 1351bbae5610caa1cb6ac9b727ff5296b157273c Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 06 Apr 2025 01:41:43 +0800 Subject: [PATCH] Slight refactor on NewServer --- cmd/forge/main.go | 11 +---------- config.go | 2 +- server.go | 10 ++++++++-- diff --git a/cmd/forge/main.go b/cmd/forge/main.go index 102f4daaac9a2b06f530a2911a060a7cf84c1ec1..07a9bfd6854106e4833b7a7e0f8d1f3e80884160 100644 --- a/cmd/forge/main.go +++ b/cmd/forge/main.go @@ -5,8 +5,6 @@ package main import ( "flag" - "log/slog" - "os" "go.lindenii.runxiyu.org/forge" ) @@ -19,14 +17,7 @@ "path to configuration file", ) flag.Parse() - s := forge.Server{} - - s.Setup() - - if err := s.LoadConfig(*configPath); err != nil { - slog.Error("loading configuration", "error", err) - os.Exit(1) - } + s := forge.NewServer(*configPath) s.Run() } diff --git a/config.go b/config.go index d845ce88e215df7a08cd93287e43e487353140c3..8ed6eb73110bd12f85af327c7d6443fbee37ccef 100644 --- a/config.go +++ b/config.go @@ -61,7 +61,7 @@ // LoadConfig loads a configuration file from the specified path and unmarshals // it to the global [config] struct. This may race with concurrent reads from // [config]; additional synchronization is necessary if the configuration is to // be made reloadable. -func (s *Server) LoadConfig(path string) (err error) { +func (s *Server) loadConfig(path string) (err error) { var configFile *os.File if configFile, err = os.Open(path); err != nil { return err diff --git a/server.go b/server.go index fdedf3cca4415fbb3b54eca5cd9ed3c33a971a03..3a90e1c869ee758199fe7aa076c8a97f374388bc 100644 --- a/server.go +++ b/server.go @@ -49,14 +49,18 @@ ready bool } -func (s *Server) Setup() { +func (s *Server) NewServer(configPath string) error { + if err := s.loadConfig(configPath); err != nil { + return err + } + s.sourceHandler = http.StripPrefix( "/-/source/", http.FileServer(http.FS(embeddedSourceFS)), ) staticFS, err := fs.Sub(embeddedResourcesFS, "static") if err != nil { - panic(err) + return err } s.staticHandler = http.StripPrefix("/-/static/", http.FileServer(http.FS(staticFS))) s.globalData = map[string]any{ @@ -72,6 +76,8 @@ misc.NoneOrPanic(misc.DeployBinary(misc.FirstOrPanic(embeddedResourcesFS.Open("hookc/hookc")), filepath.Join(s.config.Hooks.Execs, "pre-receive"))) misc.NoneOrPanic(os.Chmod(filepath.Join(s.config.Hooks.Execs, "pre-receive"), 0o755)) s.ready = true + + return nil } func (s *Server) Run() error { -- 2.48.1