package main import ( "flag" "fmt" "log" "net/http" "os" "git.icyphox.sh/legit/config" "git.icyphox.sh/legit/routes" ) var ( version = "dev" buildDate = "unknown" ) func init() { flag.Usage = func() { _, _ = fmt.Fprintf(flag.CommandLine.Output(), "legit %s (built %s)\n\nUsage:\n", version, buildDate) _, _ = fmt.Fprintf(flag.CommandLine.Output(), " legit [flags]\n\nFlags:\n") flag.PrintDefaults() } } func main() { var cfg string var showVersion bool flag.StringVar(&cfg, "config", "./config.yaml", "path to config file") flag.BoolVar(&showVersion, "version", false, "print version and exit") flag.Parse() if showVersion { fmt.Printf("legit %s (built %s)\n", version, buildDate) os.Exit(0) } c, err := config.Read(cfg) if err != nil { log.Fatal(err) } if err := UnveilPaths([]string{ c.Dirs.Static, c.Repo.ScanPath, c.Dirs.Templates, }, "r"); err != nil { log.Fatalf("unveil: %s", err) } mux := routes.Handlers(c) addr := fmt.Sprintf("%s:%d", c.Server.Host, c.Server.Port) log.Println("starting server on", addr) log.Fatal(http.ListenAndServe(addr, mux)) }