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	"github.com/meowgorithm/babyenv"
12)
13
14type Config struct {
15	Port         int    `env:"SMOOTHIE_PORT" default:"23231"`
16	KeyPath      string `env:"SMOOTHIE_KEY_PATH" default:".ssh/smoothie_server_ed25519"`
17	RepoAuthPath string `env:"SMOOTHIE_KEY_PATH" default:".ssh/smoothie_git_authorized_keys"`
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(cfg.RepoPath)),
31		gm.Middleware(cfg.RepoPath, cfg.RepoAuthPath),
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}