From 103e84d847262830bbaa550b37218e9ca8b317d3 Mon Sep 17 00:00:00 2001 From: Himanshu Sardana Date: Thu, 26 Mar 2026 21:26:35 +0000 Subject: refactor: split into cmd, pkg --- cmd/serve.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cmd/serve.go (limited to 'cmd/serve.go') diff --git a/cmd/serve.go b/cmd/serve.go new file mode 100644 index 0000000..9387d29 --- /dev/null +++ b/cmd/serve.go @@ -0,0 +1,61 @@ +package cmd + +import ( + "fmt" + "io" + "log" + "net/http" + "os" + "path/filepath" +) + +func runServe(args []string) { + themeName := DefaultTheme + port := DefaultPort + + for i := 2; i < len(args); i++ { + if args[i] == "--port" && i+1 < len(args) { + port = args[i+1] + } + if args[i] != "--port" && args[i] != "--help" && args[i] != "-h" { + themeName = args[i] + } + } + + themeCSS := fmt.Sprintf("./themes/%s/style.css", themeName) + outputCSS := "./output/style.css" + + if err := copyFile(themeCSS, outputCSS); err != nil { + log.Printf("Warning: Could not copy theme CSS: %v", err) + } + + fs := http.FileServer(http.Dir("./output/")) + http.Handle("/", fs) + + log.Printf("Serving on http://localhost:%s", port) + + if err := http.ListenAndServe(":"+port, nil); err != nil { + log.Fatalf("Server error: %s\n", err) + } +} + +func copyFile(src, dst string) error { + in, err := os.Open(src) + if err != nil { + return err + } + defer in.Close() + + if err := os.MkdirAll(filepath.Dir(dst), os.ModePerm); err != nil { + return err + } + + out, err := os.Create(dst) + if err != nil { + return err + } + defer out.Close() + + _, err = io.Copy(out, in) + return err +} -- cgit v1.3.1