A vibe coded tangled fork which supports pijul.
at sl/spindle-adapters 67 lines 1.9 kB view raw
1package config 2 3import ( 4 "context" 5 "fmt" 6 "path/filepath" 7 "time" 8 9 "github.com/bluesky-social/indigo/atproto/syntax" 10 "github.com/sethvargo/go-envconfig" 11) 12 13type Server struct { 14 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:6555"` 15 Hostname string `env:"HOSTNAME, required"` 16 TapUrl string `env:"TAP_URL, required"` 17 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` 18 Dev bool `env:"DEV, default=false"` 19 Owner syntax.DID `env:"OWNER, required"` 20 Secrets Secrets `env:",prefix=SECRETS_"` 21 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 22 DataDir string `env:"DATA_DIR, default=/var/lib/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 31func (s Server) RepoDir() string { 32 return filepath.Join(s.DataDir, "repos") 33} 34 35func (s Server) DBPath() string { 36 return filepath.Join(s.DataDir, "spindle.db") 37} 38 39type Secrets struct { 40 Provider string `env:"PROVIDER, default=sqlite"` 41 OpenBao OpenBaoConfig `env:",prefix=OPENBAO_"` 42} 43 44type OpenBaoConfig struct { 45 ProxyAddr string `env:"PROXY_ADDR, default=http://127.0.0.1:8200"` 46 Mount string `env:"MOUNT, default=spindle"` 47} 48 49type NixeryPipelines struct { 50 Nixery string `env:"NIXERY, default=nixery.tangled.sh"` 51 WorkflowTimeout time.Duration `env:"WORKFLOW_TIMEOUT, default=5m"` 52} 53 54type Config struct { 55 Server Server `env:",prefix=SPINDLE_SERVER_"` 56 NixeryPipelines NixeryPipelines `env:",prefix=SPINDLE_NIXERY_PIPELINES_"` 57} 58 59func Load(ctx context.Context) (*Config, error) { 60 var cfg Config 61 err := envconfig.Process(ctx, &cfg) 62 if err != nil { 63 return nil, err 64 } 65 66 return &cfg, nil 67}