this repo has no description
at sl/spindle-rewrite 64 lines 2.0 kB view raw
1package config 2 3import ( 4 "context" 5 "fmt" 6 "path" 7 8 "github.com/bluesky-social/indigo/atproto/syntax" 9 "github.com/sethvargo/go-envconfig" 10) 11 12type Server struct { 13 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"` 14 DBPath string `env:"DB_PATH, default=spindle.db"` 15 Hostname string `env:"HOSTNAME, required"` 16 JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` 17 TapUrl string `env:"TAP_URL, required"` 18 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` 19 Dev bool `env:"DEV, default=false"` 20 Owner syntax.DID `env:"OWNER, required"` 21 Secrets Secrets `env:",prefix=SECRETS_"` 22 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 23 DataDir string `env:"DATA_DIR, default=/var/lib/spindle"` 24 QueueSize int `env:"QUEUE_SIZE, default=100"` 25 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time 26} 27 28func (s Server) Did() syntax.DID { 29 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname)) 30} 31 32func (s Server) RepoDir() string { 33 return path.Join(s.DataDir, "repos") 34} 35 36type Secrets struct { 37 Provider string `env:"PROVIDER, default=sqlite"` 38 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"` 39} 40 41type OpenBaoConfig struct { 42 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"` 43 Mount string `env:"MOUNT, default=spindle"` 44} 45 46type NixeryPipelines struct { 47 Nixery string `env:"NIXERY, default=nixery.tangled.sh"` 48 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"` 49} 50 51type Config struct { 52 Server Server `env:",prefix=SPINDLE_SERVER_"` 53 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"` 54} 55 56func Load(ctx context.Context) (*Config, error) { 57 var cfg Config 58 err := envconfig.Process(ctx, &cfg) 59 if err != nil { 60 return nil, err 61 } 62 63 return &cfg, nil 64}