diff --git a/serve.go b/serve.go index 74a7786..829cb9d 100644 --- a/serve.go +++ b/serve.go @@ -20,13 +20,16 @@ func init() { } // Serve starts kami with reasonable defaults. -// It works (exactly) like Goji, looking for Einhorn, the bind flag, GOJI_BIND... +// The bind address can be changed by setting the GOJI_BIND environment variable, or +// by setting the "bind" command line flag. +// Serve detects einhorn and systemd for you. +// It works exactly like zenazn/goji. func Serve() { if !flag.Parsed() { flag.Parse() } - ServeListener(bind.Default()) + serveListener(Handler(), bind.Default()) } // ServeTLS is like Serve, but enables TLS using the given config. @@ -35,14 +38,46 @@ func ServeTLS(config *tls.Config) { flag.Parse() } - ServeListener(tls.NewListener(bind.Default(), config)) + serveListener(Handler(), tls.NewListener(bind.Default(), config)) } // ServeListener is like Serve, but runs kami on top of an arbitrary net.Listener. func ServeListener(listener net.Listener) { + serveListener(Handler(), listener) +} + +// Serve starts serving this mux with reasonable defaults. +// The bind address can be changed by setting the GOJI_BIND environment variable, or +// by setting the "--bind" command line flag. +// Serve detects einhorn and systemd for you. +// It works exactly like zenazn/goji. Only one mux may be served at a time. +func (m *Mux) Serve() { + if !flag.Parsed() { + flag.Parse() + } + + serveListener(m, bind.Default()) +} + +// ServeTLS is like Serve, but enables TLS using the given config. +func (m *Mux) ServeTLS(config *tls.Config) { + if !flag.Parsed() { + flag.Parse() + } + + serveListener(m, tls.NewListener(bind.Default(), config)) +} + +// ServeListener is like Serve, but runs kami on top of an arbitrary net.Listener. +func (m *Mux) ServeListener(listener net.Listener) { + serveListener(m, listener) +} + +// ServeListener is like Serve, but runs kami on top of an arbitrary net.Listener. +func serveListener(h http.Handler, listener net.Listener) { // Install our handler at the root of the standard net/http default mux. // This allows packages like expvar to continue working as expected. - http.Handle("/", Handler()) + http.Handle("/", h) log.Println("Starting kami on", listener.Addr())