Split main into openStore, newHandler, and run helpers.
This commit is contained in:
+21
-6
@@ -21,8 +21,18 @@ import (
|
||||
|
||||
func main() {
|
||||
_ = godotenv.Load()
|
||||
listen := listenAddr()
|
||||
|
||||
st := openStore()
|
||||
defer st.Close()
|
||||
|
||||
uploader := spacesUploader()
|
||||
logSpaces(uploader)
|
||||
|
||||
handler := newHandler(st, uploader)
|
||||
run(&http.Server{Addr: listenAddr(), Handler: handler})
|
||||
}
|
||||
|
||||
func openStore() *store.Store {
|
||||
databaseURL := strings.TrimSpace(os.Getenv("DATABASE_URL"))
|
||||
if databaseURL == "" {
|
||||
log.Fatal("DATABASE_URL is required")
|
||||
@@ -31,16 +41,19 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatalf("database: %v", err)
|
||||
}
|
||||
defer st.Close()
|
||||
log.Printf("database: postgres")
|
||||
return st
|
||||
}
|
||||
|
||||
uploader := spacesUploader()
|
||||
func logSpaces(uploader blob.Uploader) {
|
||||
if uploader.Enabled() {
|
||||
log.Printf("avatars: digitalocean spaces")
|
||||
} else {
|
||||
return
|
||||
}
|
||||
log.Printf("avatars: uploads disabled (set SPACES_* to enable)")
|
||||
}
|
||||
|
||||
func newHandler(st *store.Store, uploader blob.Uploader) http.Handler {
|
||||
srv, err := web.New(st, st.SessionStore(), plumber.TemplateFS, plumber.StaticFS, web.Config{
|
||||
AdminUsername: os.Getenv("ADMIN_USERNAME"),
|
||||
SecureCookie: os.Getenv("SECURE_COOKIE") == "1",
|
||||
@@ -49,11 +62,13 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatalf("server: %v", err)
|
||||
}
|
||||
return srv.Handler()
|
||||
}
|
||||
|
||||
httpSrv := &http.Server{Addr: listen, Handler: srv.Handler()}
|
||||
func run(httpSrv *http.Server) {
|
||||
errCh := make(chan error, 1)
|
||||
go func() {
|
||||
log.Printf("listening on %s", listen)
|
||||
log.Printf("listening on %s", httpSrv.Addr)
|
||||
errCh <- httpSrv.ListenAndServe()
|
||||
}()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user