summaryrefslogtreecommitdiff
path: root/internal/app/action.go
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2025-02-03 01:12:45 -0500
committerBenjamin Chausse <benjamin@chausse.xyz>2025-02-03 01:12:45 -0500
commit5389e1a5d26fdbf2441fa5a1e101999e8449b9d1 (patch)
tree069cd37cb8e556c1ba3b47c3ea8576a1aa91ea2c /internal/app/action.go
Batman
Diffstat (limited to 'internal/app/action.go')
-rw-r--r--internal/app/action.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/internal/app/action.go b/internal/app/action.go
new file mode 100644
index 0000000..b579253
--- /dev/null
+++ b/internal/app/action.go
@@ -0,0 +1,47 @@
+package app
+
+import (
+ "context"
+ "fmt"
+ "log/slog"
+
+ "github.com/ChausseBenjamin/rafta/internal/logging"
+ "github.com/ChausseBenjamin/rafta/internal/server"
+ "github.com/ChausseBenjamin/rafta/internal/storage"
+ "github.com/urfave/cli/v3"
+)
+
+func action(ctx context.Context, cmd *cli.Command) error {
+ err := logging.Setup(
+ cmd.String(FlagLogLevel),
+ cmd.String(FlagLogFormat),
+ cmd.String(FlagLogOutput),
+ )
+ if err != nil {
+ slog.Warn("Error(s) occured during logger initialization", logging.ErrKey, err)
+ }
+
+ slog.Info("Starting rafta server")
+
+ // TODO: Setup the db
+ store, err := storage.Setup(cmd.String(FlagDBPath))
+ if err != nil {
+ slog.Error("Unable to setup database", logging.ErrKey, err)
+ }
+
+ srv, lis, err := server.Setup(cmd.Int(FlagListenPort), store)
+ if err != nil {
+ slog.Error("Unable to setup server", logging.ErrKey, err)
+
+ return err
+ }
+
+ slog.Info(fmt.Sprintf("Listening on port %d", cmd.Int(FlagListenPort)))
+ if err := srv.Serve(lis); err != nil {
+ slog.Error("Server runtime error", logging.ErrKey, err)
+
+ return err
+ }
+
+ return nil
+}