main.go

 1package main
 2
 3import (
 4	"log"
 5
 6	"github.com/charmbracelet/soft"
 7
 8	"github.com/meowgorithm/babyenv"
 9)
10
11type serverConfig struct {
12	Host            string `env:"SOFT_SERVE_HOST" default:""`
13	Port            int    `env:"SOFT_SERVE_PORT" default:"23231"`
14	KeyPath         string `env:"SOFT_SERVE_KEY_PATH" default:".ssh/soft_serve_server_ed25519"`
15	RepoPath        string `env:"SOFT_SERVE_REPO_PATH" default:".repos"`
16	InitialAdminKey string `env:"SOFT_SERVE_INITIAL_ADMIN_KEY" default:""`
17}
18
19func main() {
20	var cfg serverConfig
21	err := babyenv.Parse(&cfg)
22	if err != nil {
23		log.Fatalln(err)
24	}
25	s := soft.NewServer(
26		cfg.Host,
27		cfg.Port,
28		cfg.KeyPath,
29		cfg.RepoPath,
30		cfg.InitialAdminKey,
31	)
32	log.Printf("Starting SSH server on %s:%d\n", cfg.Host, cfg.Port)
33	err = s.ListenAndServe()
34	if err != nil {
35		log.Fatalln(err)
36	}
37}