1package config
2
3import (
4 "log"
5
6 "github.com/charmbracelet/soft/stats"
7 "github.com/meowgorithm/babyenv"
8)
9
10// Config is the configuration for the soft-serve.
11type Config 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 Stats stats.Stats
18}
19
20// DefaultConfig returns a Config with the values populated with the defaults
21// or specified environment variables.
22func DefaultConfig() *Config {
23 var scfg Config
24 err := babyenv.Parse(&scfg)
25 if err != nil {
26 log.Fatalln(err)
27 }
28 return scfg.WithStats(stats.NewStats())
29}
30
31func (cfg *Config) WithStats(s stats.Stats) *Config {
32 cfg.Stats = s
33 return cfg
34}