package main import ( "encoding/json" "flag" "io" "log" "net/http" "os" "git.brandonirizarry.xyz/adventure/internal/types" ) func main() { // Set up log flags. log.SetFlags(log.LstdFlags | log.Lshortfile) // Get any command-line flags (port, etc.) port := flag.String("port", "8080", "Server port") filename := flag.String("json", "adventure.json", "Adventure file (JSON)") flag.Parse() // Get the JSON. f, err := os.Open(*filename) if err != nil { log.Fatal(err) } defer f.Close() jsonBytes, err := io.ReadAll(f) if err != nil { log.Fatal(err) } var story types.Story if err := json.Unmarshal(jsonBytes, &story); err != nil { log.Fatal(err) } // Set up the handlers and server. mux := http.NewServeMux() mux.Handle("/{arc}", &story) log.Fatal(runServer(mux, *port)) } func runServer(h http.Handler, port string) error { srv := http.Server{ Addr: ":" + port, Handler: h, } log.Printf("Serving on port %s...\n", port) return srv.ListenAndServe() }