diff --git a/cmd/dev-server/main.go b/cmd/dev-server/main.go deleted file mode 100644 index 7d9c12e..0000000 --- a/cmd/dev-server/main.go +++ /dev/null @@ -1,22 +0,0 @@ -package main - -import ( - "context" - "log" - "net/http" - - "guz.one/api" - "guz.one/pages" -) - -func main() { - mux := http.NewServeMux() - - mux.HandleFunc("/api/hello", api.Hello) - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - err := pages.Homepage().Render(context.Background(), w) - _ = err - }) - - log.Fatal(http.ListenAndServe(":5432", mux)) -} diff --git a/cmd/vercel/main.go b/cmd/vercel/main.go new file mode 100644 index 0000000..ee86cc9 --- /dev/null +++ b/cmd/vercel/main.go @@ -0,0 +1,61 @@ +package main + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "log" + "net/http" + "os" + + "guz.one/config" + "guz.one/internals" +) + +type VercelConfig struct { + OutputDirectory string `json:"outputDirectory"` +} + +func main() { + configPath := flag.String("c", "./vercel.json", "the path to the vercel.json file") + staticDir := flag.String("s", "./static", "the directory to copy static files from") + port := flag.Int("p", 8080, "the port to run the server") + + configFile, err := os.ReadFile(*configPath) + if err != nil { + log.Fatalf("Unable to read vercel.json file due to:\n%s", err) + } + + var c VercelConfig + err = json.Unmarshal(configFile, &c) + if err != nil { + log.Fatalf("Unable to parse vercel.json file due to:\n%s", err) + } + + w := internals.StaticWriter{ + DistDir: &c.OutputDirectory, + StaticDir: staticDir, + Pages: config.ROUTES, + Context: context.Background(), + Logger: *log.Default(), + } + + log.Print("Writing static files") + err = w.WriteAll() + if err != nil { + log.Fatal(err) + } + + log.Print("Starting server") + mux := http.NewServeMux() + + config.APIROUTES(mux) + mux.Handle("/", http.FileServer(http.Dir(c.OutputDirectory))) + + log.Printf("Running server at port: %v", *port) + err = http.ListenAndServe(fmt.Sprintf(":%v", *port), mux) + if err != nil { + log.Fatalf("Server crashed due to:\n%s", err) + } +}