forked from tangled.org/core
this repo has no description
1package config 2 3import ( 4 "context" 5 "fmt" 6 7 "github.com/bluesky-social/indigo/atproto/syntax" 8 "github.com/sethvargo/go-envconfig" 9) 10 11type Server struct { 12 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"` 13 DBPath string `env:"DB_PATH, default=spindle.db"` 14 Hostname string `env:"HOSTNAME, required"` 15 JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` 16 Dev bool `env:"DEV, default=false"` 17 Owner string `env:"OWNER, required"` 18 Secrets Secrets `env:",prefix=SECRETS_"` 19} 20 21func (s Server) Did() syntax.DID { 22 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname)) 23} 24 25type Secrets struct { 26 Provider string `env:"PROVIDER, default=sqlite"` 27 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"` 28} 29 30type OpenBaoConfig struct { 31 Addr string `env:"ADDR"` 32 RoleID string `env:"ROLE_ID"` 33 SecretID string `env:"SECRET_ID"` 34 Mount string `env:"MOUNT, default=spindle"` 35} 36 37type Pipelines struct { 38 Nixery string `env:"NIXERY, default=nixery.tangled.sh"` 39 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"` 40 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 41} 42 43type Config struct { 44 Server Server `env:",prefix=SPINDLE_SERVER_"` 45 Pipelines Pipelines `env:",prefix=SPINDLE_PIPELINES_"` 46} 47 48func Load(ctx context.Context) (*Config, error) { 49 var cfg Config 50 err := envconfig.Process(ctx, &cfg) 51 if err != nil { 52 return nil, err 53 } 54 55 return &cfg, nil 56}