diff options
Diffstat (limited to 'internal/app/action.go')
-rw-r--r-- | internal/app/action.go | 47 |
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 +} |