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 RepoAuthPath string `env:"SMOOTHIE_REPO_KEYS_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(cfg.RepoPath, time.Second*5)),
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}