137 lines
3.9 KiB
Go
137 lines
3.9 KiB
Go
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"`
|
|
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"`
|
|
}
|
|
|
|
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 StatePolicy struct {
|
|
Mode string `yaml:"mode"`
|
|
}
|
|
|
|
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"`
|
|
}
|