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}