mood/inspo boards
1package main
2
3import (
4 "context"
5 "log"
6 "os"
7
8 _ "github.com/joho/godotenv/autoload"
9 "github.com/urfave/cli/v3"
10 "tangled.org/dane.is.extraordinarily.cool/pallet/internal/db"
11 "tangled.org/dane.is.extraordinarily.cool/pallet/internal/logger"
12 "tangled.org/dane.is.extraordinarily.cool/pallet/internal/server"
13)
14
15
16func main() {
17 if err := run(os.Args); err != nil {
18 log.Fatal(err)
19 os.Exit(-1)
20 }
21}
22
23func run(args []string) error {
24 app := &cli.Command{
25 Name: "pallet",
26 Usage: "pallet app server",
27 }
28
29 app.Flags = []cli.Flag{
30 &cli.StringFlag{
31 Name: "log-level",
32 Usage: "log verbosity level (eg: warn, info, debug)",
33 Sources: cli.EnvVars("GO_LOG_LEVEL", "LOG_LEVEL"),
34 },
35 }
36
37 app.Commands = []*cli.Command{
38 &cli.Command{
39 Name: "start",
40 Usage: "start the pallet app server",
41 Action: runServer,
42 Flags: []cli.Flag{
43 &cli.StringFlag{
44 Name: "port",
45 Usage: "Port to bind the HTTP server to",
46 Value: ":8080",
47 Sources: cli.EnvVars("PORT"),
48 },
49 },
50 },
51 }
52
53
54 return app.Run(context.Background(), args)
55}
56
57func runServer(ctx context.Context, cmd *cli.Command) error {
58 logger := logger.NewLogger(cmd.String("log-level"), os.Stdout)
59 db, err := db.NewSQLiteDB()
60 if err != nil {
61 log.Fatal(err)
62 }
63 logger.Info("database created")
64
65 server := server.NewServer(cmd.String("port"), db, logger)
66
67 if err := server.Start(); err != nil {
68 log.Fatal(err)
69 }
70
71 return nil
72}