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