diff options
Diffstat (limited to 'takeoff.go')
-rw-r--r-- | takeoff.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/takeoff.go b/takeoff.go new file mode 100644 index 0000000..7f7dd09 --- /dev/null +++ b/takeoff.go @@ -0,0 +1,62 @@ +package main + +import ( + "flag" + "html/template" + "log" + "net/http" + "path" +) + +var ( + addr = flag.String("a", "localhost:8888", "listen address") + cdir = flag.String("c", "config", "path to configuration directory") + sdir = flag.String("s", "static", "path to static files directory") + tdir = flag.String("t", "templates", "path to templates directory") +) + +var ( + instances *lineListConfig + langs *langListConfig +) + +var homeTemplate string + +var tData struct { + Instances []string + Langs []Lang +} + +func home(w http.ResponseWriter, r *http.Request) { + tData.Instances = instances.getList() + tData.Langs = langs.getList() + t := template.Must(template.ParseFiles(homeTemplate)) + t.Execute(w, &tData) +} + +func serve() { + files := http.FileServer(http.Dir(*sdir)) + http.HandleFunc("/", home) + http.Handle("/static/", http.StripPrefix("/static/", files)) + log.Fatal(http.ListenAndServe(*addr, nil)) +} + +func main() { + var err error + + flag.Parse() + + startConfigWatcher(*cdir) + defer stopConfigWatcher() + + instances, err = newLineListConfig("instances") + langs, err = newLangListConfig("langs") + if err != nil { + log.Fatal("FATAL: config list error: ", err) + } + + homeTemplate = path.Join(*tdir, "index.html") + + log.Printf("takeoff v0 listening at http://%s\n", *addr) + serve() +} |