config.go

 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}