package config type Config struct { Server Server `yaml:"server"` Secrets Secrets `yaml:"secrets"` UploadTokens []UploadToken `yaml:"upload_tokens"` Pipelines []Pipeline `yaml:"pipelines"` } type Server struct { HTTP HTTPServer `yaml:"http"` } type HTTPServer struct { Bind string `yaml:"bind"` StagingRoot string `yaml:"staging_root"` MaxUploadSize *ByteSize `yaml:"max_upload_size"` QueueSize int `yaml:"queue_size"` MaxConcurrency int `yaml:"max_concurrency"` Retention *Duration `yaml:"retention"` } type Secrets struct { Directory string `yaml:"directory"` } type UploadToken struct { ID string `yaml:"id"` TokenEnv string `yaml:"token_env"` AllowPipelines []string `yaml:"allow_pipelines"` } type Pipeline struct { ID string `yaml:"id"` Source Backend `yaml:"source"` Validation ValidationPolicy `yaml:"validation"` Destinations []Destination `yaml:"destinations"` } type Destination struct { ID string `yaml:"id"` Backend string `yaml:"backend"` Host string `yaml:"host"` User string `yaml:"user"` Port int `yaml:"port"` Path string `yaml:"path"` Endpoint string `yaml:"endpoint"` Bucket string `yaml:"bucket"` Prefix string `yaml:"prefix"` Region string `yaml:"region"` ForcePath *bool `yaml:"force_path_style"` Creds Credentials `yaml:"credentials"` SSH SSH `yaml:",inline"` Publish *PublishPolicy `yaml:"publish"` Transform Transform `yaml:"transform"` PathMap PathMapping `yaml:"path_mapping"` Links *Links `yaml:"links"` State StatePolicy `yaml:"state"` Reconciliation ReconciliationPolicy `yaml:"reconciliation"` Takeover TakeoverPolicy `yaml:"takeover"` Retention RetentionPolicy `yaml:"retention"` Transfer TransferPolicy `yaml:"transfer"` } type Backend struct { Backend string `yaml:"backend"` Host string `yaml:"host"` User string `yaml:"user"` Port int `yaml:"port"` Path string `yaml:"path"` Endpoint string `yaml:"endpoint"` Bucket string `yaml:"bucket"` Prefix string `yaml:"prefix"` Region string `yaml:"region"` ForcePath *bool `yaml:"force_path_style"` Creds Credentials `yaml:"credentials"` SSH SSH `yaml:",inline"` Upload HTTPUpload `yaml:",inline"` } type HTTPUpload struct { StagingPath string `yaml:"staging_path"` MaxUploadSize *ByteSize `yaml:"max_upload_size"` } type SSH struct { KeyFile string `yaml:"ssh_key_file"` KnownHosts string `yaml:"known_hosts"` HostKeyPolicy HostKeyPolicy `yaml:"host_key_policy"` } type Credentials struct { AccessKeyIDEnv string `yaml:"access_key_id_env"` SecretAccessKeyEnv string `yaml:"secret_access_key_env"` } type ValidationPolicy struct { OnDigestMismatch string `yaml:"on_digest_mismatch"` } type PublishPolicy struct { Source bool `yaml:"source"` HTML bool `yaml:"html"` } type Transform struct { MarkdownToHTML *MarkdownToHTML `yaml:"markdown_to_html"` } type MarkdownToHTML struct { Enabled bool `yaml:"enabled"` Mode string `yaml:"mode"` Input string `yaml:"input"` CssHref string `yaml:"css_href"` } type PathMapping struct { Mode string `yaml:"mode"` } type Links struct { BaseURL string `yaml:"base_url"` Primary string `yaml:"primary"` } type ReconciliationPolicy struct { Mode string `yaml:"mode"` } type TakeoverPolicy struct { Mode string `yaml:"mode"` } type StatePolicy struct { Mode string `yaml:"mode"` } type RetentionPolicy struct { Prune PrunePolicy `yaml:"prune"` } type PrunePolicy struct { Enabled bool `yaml:"enabled"` OlderThan *Duration `yaml:"older_than"` KeepLatest *int `yaml:"keep_latest"` } type TransferPolicy struct { OnDestinationSame string `yaml:"on_destination_same"` OnDestinationOlder string `yaml:"on_destination_older"` OnDestinationNewer string `yaml:"on_destination_newer"` OnConflict string `yaml:"on_conflict"` }