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	RepoAuthPath string `env:"SMOOTHIE_KEY_PATH" default:".ssh/smoothie_git_authorized_keys"`
19	RepoPath     string `env:"SMOOTHIE_REPO_PATH" default:".repos"`
20}
21
22func main() {
23	var cfg Config
24	err := babyenv.Parse(&cfg)
25	if err != nil {
26		log.Fatalln(err)
27	}
28	s, err := server.NewServer(
29		cfg.Port,
30		cfg.KeyPath,
31		bm.Middleware(tui.SessionHandler, tea.WithAltScreen()),
32		gm.Middleware(cfg.RepoPath, cfg.RepoAuthPath),
33		lm.Middleware(),
34	)
35	if err != nil {
36		log.Fatalln(err)
37	}
38	err = s.Start()
39	if err != nil {
40		log.Fatalln(err)
41	}
42}