From 0aba4eb1a463af914fbff80ae953a64c5772ecc3 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 13 Apr 2020 16:19:33 -0400 Subject: [PATCH] server.go: add getopt and logging --- api/go.mod | 1 + api/go.sum | 2 ++ api/server.go | 37 ++++++++++++++++++++++--------------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/api/go.mod b/api/go.mod index f7ce1bc..a7c8f53 100644 --- a/api/go.mod +++ b/api/go.mod @@ -3,6 +3,7 @@ module git.sr.ht/~sircmpwn/git.sr.ht/api go 1.14 require ( + git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3 // indirect git.sr.ht/~sircmpwn/gqlgen v0.0.0-20200412134447-57d7234737d4 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/go-chi/chi v3.3.2+incompatible diff --git a/api/go.sum b/api/go.sum index fca2176..e784227 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,3 +1,5 @@ +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3 h1:4wDp4BKF7NQqoh73VXpZsB/t1OEhDpz/zEpmdQfbjDk= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= git.sr.ht/~sircmpwn/git.sr.ht v0.0.0-20200405134845-b8fbf5bf484f h1:SW8+xV65kcga0rHmQbnZkLG36yp286BcbVOdQTVo1m8= git.sr.ht/~sircmpwn/git.sr.ht v0.0.0-20200413150414-046cd382d7b7 h1:PYRTIcsHR5W+aPn98OCC73ly528uw5o/4Z3b5Rvc7vA= git.sr.ht/~sircmpwn/gqlgen v0.0.0-20200412134447-57d7234737d4 h1:J/Sb88htNHzZaN6ZEF8BnRWj3LzYoTrOL4WRhZEEiQE= diff --git a/api/server.go b/api/server.go index 3683c8b..2548be3 100644 --- a/api/server.go +++ b/api/server.go @@ -6,30 +6,39 @@ import ( "net/http" "os" + "git.sr.ht/~sircmpwn/getopt" + "git.sr.ht/~sircmpwn/gqlgen/graphql/handler" + "git.sr.ht/~sircmpwn/gqlgen/graphql/playground" "github.com/go-chi/chi" + "github.com/go-chi/chi/middleware" "github.com/vaughan0/go-ini" + _ "github.com/lib/pq" + "git.sr.ht/~sircmpwn/git.sr.ht/api/auth" "git.sr.ht/~sircmpwn/git.sr.ht/api/loaders" "git.sr.ht/~sircmpwn/git.sr.ht/api/graph" "git.sr.ht/~sircmpwn/git.sr.ht/api/graph/generated" - "git.sr.ht/~sircmpwn/gqlgen/graphql/handler" - "git.sr.ht/~sircmpwn/gqlgen/graphql/playground" - - _ "github.com/lib/pq" ) -const defaultPort = "8080" +const defaultAddr = ":8080" func main() { - port := os.Getenv("PORT") - if port == "" { - port = defaultPort - } - var ( + addr string = defaultAddr config ini.File err error ) + opts, _, err := getopt.Getopts(os.Args, "b:d") + if err != nil { + panic(err) + } + for _, opt := range opts { + switch opt.Option { + case 'b': + addr = opt.Value + } + } + for _, path := range []string{"../config.ini", "/etc/sr.ht/config.ini"} { config, err = ini.LoadFile(path) if err == nil { @@ -51,11 +60,9 @@ func main() { } router := chi.NewRouter() - // TODO: Add middleware to: - // - Gracefully handle panics - // - Log queries in debug mode router.Use(auth.Middleware(db)) router.Use(loaders.Middleware(db)) + router.Use(middleware.Logger) srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{ Resolvers: &graph.Resolver{DB: db}, @@ -64,6 +71,6 @@ func main() { router.Handle("/", playground.Handler("GraphQL playground", "/query")) router.Handle("/query", srv) - log.Printf("connect to http://localhost:%s/ for GraphQL playground", port) - log.Fatal(http.ListenAndServe(":"+port, router)) + log.Printf("running on %s", addr) + log.Fatal(http.ListenAndServe(addr, router)) } -- 2.38.4