main.go

 1package main
 2
 3import (
 4	"log"
 5	"smoothie/server"
 6	bm "smoothie/server/middleware/bubbletea"
 7	gm "smoothie/server/middleware/git"
 8	lm "smoothie/server/middleware/logging"
 9	"smoothie/tui"
10
11	tea "github.com/charmbracelet/bubbletea"
12	"github.com/meowgorithm/babyenv"
13)
14
15type Config struct {
16	Port     int    `env:"SMOOTHIE_PORT" default:"23231"`
17	KeyPath  string `env:"SMOOTHIE_KEY_PATH" default:".ssh/smoothie_server_ed25519"`
18	RepoPath string `env:"SMOOTHIE_REPO_PATH" default:".repos"`
19}
20
21func main() {
22	var cfg Config
23	err := babyenv.Parse(&cfg)
24	if err != nil {
25		log.Fatalln(err)
26	}
27	s, err := server.NewServer(
28		cfg.Port,
29		cfg.KeyPath,
30		bm.Middleware(tui.SessionHandler, tea.WithAltScreen()),
31		gm.Middleware(cfg.RepoPath),
32		lm.Middleware(),
33	)
34	if err != nil {
35		log.Fatalln(err)
36	}
37	err = s.Start()
38	if err != nil {
39		log.Fatalln(err)
40	}
41}