A vibe coded tangled fork which supports pijul.
at 7a3176fe2cb26689db2bb2eb3382c938251c4ef1 59 lines 1.9 kB view raw
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 TapDBUrl string `env:"TAP_DB_URL, default=sqlite://./spindle-tap.db"` 16 TapPort string `env:"TAP_PORT, default=6480"` 17 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` 18 RelayUrl string `env:"RELAY_URL, default=https://relay1.us-east.bsky.network"` 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 QueueSize int `env:"QUEUE_SIZE, default=100"` 24 MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time 25} 26 27func (s Server) Did() syntax.DID { 28 return syntax.DID(fmt.Sprintf("did:web:%s", s.Hostname)) 29} 30 31type Secrets struct { 32 Provider string `env:"PROVIDER, default=sqlite"` 33 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"` 34} 35 36type OpenBaoConfig struct { 37 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"` 38 Mount string `env:"MOUNT, default=spindle"` 39} 40 41type NixeryPipelines struct { 42 Nixery string `env:"NIXERY, default=nixery.tangled.sh"` 43 WorkflowTimeout string `env:"WORKFLOW_TIMEOUT, default=5m"` 44} 45 46type Config struct { 47 Server Server `env:",prefix=SPINDLE_SERVER_"` 48 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"` 49} 50 51func Load(ctx context.Context) (*Config, error) { 52 var cfg Config 53 err := envconfig.Process(ctx, &cfg) 54 if err != nil { 55 return nil, err 56 } 57 58 return &cfg, nil 59}