diff options
| author | AKP <tom@tdpain.net> | 2022-04-01 19:49:58 +0100 |
|---|---|---|
| committer | AKP <tom@tdpain.net> | 2022-04-01 19:49:58 +0100 |
| commit | e03d17ffbebebba0c5f0468addf8349c2336c437 (patch) | |
| tree | 8d2a0845555f51e60af11a0a12b72b706401d092 /walrss/main.go | |
| parent | 7709fa6d8321caae2bf1c96e88baf85473946e67 (diff) | |
First endpoint
Signed-off-by: AKP <tom@tdpain.net>
Diffstat (limited to 'walrss/main.go')
| -rw-r--r-- | walrss/main.go | 55 |
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 +} |
