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