M api/go.mod => api/go.mod +1 -0
@@ 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
M api/go.sum => api/go.sum +2 -0
@@ 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=
M api/server.go => api/server.go +22 -15
@@ 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))
}