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