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}