From 32eed5ab312f6e60a487be519e9a57d733151c01 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 19 Feb 2024 01:50:58 +0100 Subject: [PATCH] Add basic config file Closes: https://todo.sr.ht/~emersion/sinwon/2 --- config.go | 24 ++++++++++++++++++++++++ go.mod | 2 ++ go.sum | 4 ++++ main.go | 16 +++++++++++++--- diff --git a/config.go b/config.go new file mode 100644 index 0000000000000000000000000000000000000000..2d3067b1a4e1146c315dc5f4cb4932ac9ff160a3 --- /dev/null +++ b/config.go @@ -0,0 +1,24 @@ +package main + +import ( + "os" + + "git.sr.ht/~emersion/go-scfg" +) + +type Config struct { + Listen string `scfg:"listen"` + Database string `scfg:"database"` +} + +func loadConfig(filename string) (*Config, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + + var config Config + err = scfg.NewDecoder(f).Decode(&config) + return &config, err +} diff --git a/go.mod b/go.mod index a08e4be9d9c3a1ee3188f72994751c0eae2271ec..2c40e24fbfac5b403e711f8c2fc6743e69dfbb5b 100644 --- a/go.mod +++ b/go.mod @@ -9,3 +9,5 @@ require golang.org/x/crypto v0.19.0 require github.com/go-chi/chi/v5 v5.0.12 + +require git.sr.ht/~emersion/go-scfg v0.0.0-20240128091534-2ae16e782082 diff --git a/go.sum b/go.sum index 861090a14f9dc7f7147d39b5e4ffdd55057f35aa..6a51921d942f10cf6252365e15e07b6c05f3057d 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,9 @@ git.sr.ht/~emersion/go-oauth2 v0.0.0-20240217160856-2e0d6e20b088 h1:KuPliLD8CQM1WbCHdjHR6mhadIzLaAJCNENmvB1y9gs= git.sr.ht/~emersion/go-oauth2 v0.0.0-20240217160856-2e0d6e20b088/go.mod h1:VHj0jSCLIkrfEwmOvJ4+ykpoVbD/YLN7BM523oKKBHc= +git.sr.ht/~emersion/go-scfg v0.0.0-20240128091534-2ae16e782082 h1:9Udx5fm4vRtmgDIBjy2ef5QioHbzpw5oHabbhpAUyEw= +git.sr.ht/~emersion/go-scfg v0.0.0-20240128091534-2ae16e782082/go.mod h1:ybgvEJTIx5XbaspSviB3KNa6OdPmAZqDoSud7z8fFlw= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= diff --git a/main.go b/main.go index 317bfdd68d1f44f9b0dc67df19f32a82d5b8d6ca..e457185413695d6800f080bd36fdb5e707bd2186 100644 --- a/main.go +++ b/main.go @@ -20,16 +20,26 @@ staticFS embed.FS ) func main() { - var listenAddr string + var configFilename, listenAddr string + flag.StringVar(&configFilename, "config", "/etc/sinwon/config", "Configuration filename") flag.StringVar(&listenAddr, "listen", ":8080", "HTTP listen address") flag.Parse() - tpl := template.Must(template.ParseFS(templateFS, "template/*.html")) + cfg, err := loadConfig(configFilename) + if err != nil { + log.Fatalf("Failed to load config file: %v", err) + } - db, err := openDB("sinwon.db") + if listenAddr == "" { + listenAddr = cfg.Listen + } + + db, err := openDB(cfg.Database) if err != nil { log.Fatalf("Failed to open DB: %v", err) } + + tpl := template.Must(template.ParseFS(templateFS, "template/*.html")) mux := chi.NewRouter() mux.Handle("/static/*", http.FileServer(http.FS(staticFS))) -- 2.48.1