grim/goserve

registry is already setup in the tasks
draft
2019-05-04, Gary Kramlich
fae68662c5cd
registry is already setup in the tasks
package main
import (
"log"
"net/http"
"os"
)
func getenv(name, def string) string {
val := os.Getenv(name)
if val != "" {
return val
}
return def
}
func newLogger(l *log.Logger, h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
l.Println(r.Method, r.URL.Path, r.RemoteAddr, r.UserAgent())
}()
h.ServeHTTP(w, r)
})
}
func main() {
logger := log.New(os.Stdout, "", log.LstdFlags|log.LUTC)
fs := http.FileServer(http.Dir(getenv("GOSERVE_ROOT", "html")))
if prefix := getenv("GOSERVE_PREFIX", ""); prefix != "" {
log.Printf("stripping prefix %q\n", prefix)
fs = http.StripPrefix(prefix, fs)
}
http.Handle("/", newLogger(logger, fs))
addr := getenv("GOSERVE_ADDR", ":3000")
log.Printf("Listening on %s\n", addr)
http.ListenAndServe(addr, nil)
}