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}