main.go (view raw)
1package main
2
3import (
4 "flag"
5 "fmt"
6 "log"
7 "net/http"
8 "os"
9
10 "git.icyphox.sh/legit/config"
11 "git.icyphox.sh/legit/routes"
12)
13
14var (
15 version = "dev"
16 buildDate = "unknown"
17)
18
19func init() {
20 flag.Usage = func() {
21 _, _ = fmt.Fprintf(flag.CommandLine.Output(), "legit %s (built %s)\n\nUsage:\n", version, buildDate)
22 _, _ = fmt.Fprintf(flag.CommandLine.Output(), " legit [flags]\n\nFlags:\n")
23 flag.PrintDefaults()
24 }
25}
26
27func main() {
28 var cfg string
29 var showVersion bool
30 flag.StringVar(&cfg, "config", "./config.yaml", "path to config file")
31 flag.BoolVar(&showVersion, "version", false, "print version and exit")
32 flag.Parse()
33
34 if showVersion {
35 fmt.Printf("legit %s (built %s)\n", version, buildDate)
36 os.Exit(0)
37 }
38
39 c, err := config.Read(cfg)
40 if err != nil {
41 log.Fatal(err)
42 }
43
44 if err := UnveilPaths([]string{
45 c.Dirs.Static,
46 c.Repo.ScanPath,
47 c.Dirs.Templates,
48 },
49 "r"); err != nil {
50 log.Fatalf("unveil: %s", err)
51 }
52
53 mux := routes.Handlers(c)
54 addr := fmt.Sprintf("%s:%d", c.Server.Host, c.Server.Port)
55 log.Println("starting server on", addr)
56 log.Fatal(http.ListenAndServe(addr, mux))
57}