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}