aboutsummaryrefslogtreecommitdiffstats
path: root/walrss/main.go
diff options
context:
space:
mode:
authorAKP <tom@tdpain.net>2022-04-01 19:49:58 +0100
committerAKP <tom@tdpain.net>2022-04-01 19:49:58 +0100
commite03d17ffbebebba0c5f0468addf8349c2336c437 (patch)
tree8d2a0845555f51e60af11a0a12b72b706401d092 /walrss/main.go
parent7709fa6d8321caae2bf1c96e88baf85473946e67 (diff)
First endpoint
Signed-off-by: AKP <tom@tdpain.net>
Diffstat (limited to 'walrss/main.go')
-rw-r--r--walrss/main.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/walrss/main.go b/walrss/main.go
new file mode 100644
index 0000000..9cb951d
--- /dev/null
+++ b/walrss/main.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "github.com/codemicro/walrss/walrss/internal/db"
+ "github.com/codemicro/walrss/walrss/internal/http"
+ "github.com/codemicro/walrss/walrss/internal/state"
+ "github.com/rs/zerolog/log"
+ "os"
+)
+
+const dbFilename = "walrss.db"
+const walrssDirectoryEnv = "WALRSS_DIR"
+
+func run() error {
+ if err := switchToDataDirectory(); err != nil {
+ return err
+ }
+
+ st := state.New()
+ if config, err := state.LoadConfig(); err != nil {
+ return err
+ } else {
+ st.Config = config
+ }
+
+ if err := os.Chdir(st.Config.DataDirectory); err != nil {
+ return err
+ }
+
+ store, err := db.New(dbFilename)
+ if err != nil {
+ return err
+ }
+ st.Data = store
+
+ server, err := http.New(st)
+ if err != nil {
+ return err
+ }
+
+ return server.Run()
+}
+
+func main() {
+ if err := run(); err != nil {
+ log.Fatal().Err(err).Msg("could not start")
+ }
+}
+
+func switchToDataDirectory() error {
+ if dir := os.Getenv(walrssDirectoryEnv); dir != "" {
+ return os.Chdir(dir)
+ }
+ return nil
+}