all repos — legit @ 607f5d6feaa0fd43c4b1b7a7c227fab33b06c298

Unnamed repository; edit this file 'description' to name the repository.

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}