Files
insertr/internal/config/config.go

77 lines
3.0 KiB
Go

package config
type Config struct {
Database DatabaseConfig `yaml:"database" mapstructure:"database"`
API APIConfig `yaml:"api" mapstructure:"api"`
CLI CLIConfig `yaml:"cli" mapstructure:"cli"`
Server ServerConfig `yaml:"server" mapstructure:"server"`
Auth AuthConfig `yaml:"auth" mapstructure:"auth"`
Library LibraryConfig `yaml:"library" mapstructure:"library"`
}
type DatabaseConfig struct {
Path string `yaml:"path" mapstructure:"path"`
}
type APIConfig struct {
URL string `yaml:"url" mapstructure:"url"`
Key string `yaml:"key" mapstructure:"key"`
}
type CLIConfig struct {
SiteID string `yaml:"site_id" mapstructure:"site_id"`
}
type ServerConfig struct {
Port int `yaml:"port" mapstructure:"port"`
Host string `yaml:"host" mapstructure:"host"`
Sites []SiteConfig `yaml:"sites" mapstructure:"sites"`
}
type AuthConfig struct {
DevMode bool `yaml:"dev_mode" mapstructure:"dev_mode"`
Provider string `yaml:"provider" mapstructure:"provider"`
JWTSecret string `yaml:"jwt_secret" mapstructure:"jwt_secret"`
OAuthConfigs map[string]OAuthConfig `yaml:"oauth_configs" mapstructure:"oauth_configs"`
OIDC *OIDCConfig `yaml:"oidc" mapstructure:"oidc"`
}
type OAuthConfig struct {
ClientID string `yaml:"client_id" mapstructure:"client_id"`
ClientSecret string `yaml:"client_secret" mapstructure:"client_secret"`
RedirectURL string `yaml:"redirect_url" mapstructure:"redirect_url"`
Scopes []string `yaml:"scopes" mapstructure:"scopes"`
}
type OIDCConfig struct {
Endpoint string `yaml:"endpoint" mapstructure:"endpoint"`
ClientID string `yaml:"client_id" mapstructure:"client_id"`
ClientSecret string `yaml:"client_secret" mapstructure:"client_secret"`
RedirectURL string `yaml:"redirect_url" mapstructure:"redirect_url"`
Scopes []string `yaml:"scopes" mapstructure:"scopes"`
}
type SiteConfig struct {
SiteID string `yaml:"site_id" mapstructure:"site_id"`
Path string `yaml:"path" mapstructure:"path"`
SourcePath string `yaml:"source_path" mapstructure:"source_path"`
Domain string `yaml:"domain" mapstructure:"domain"`
AutoEnhance bool `yaml:"auto_enhance" mapstructure:"auto_enhance"`
Discovery *DiscoveryConfig `yaml:"discovery" mapstructure:"discovery"`
}
type DiscoveryConfig struct {
Enabled bool `yaml:"enabled" mapstructure:"enabled"`
Aggressive bool `yaml:"aggressive" mapstructure:"aggressive"`
Containers bool `yaml:"containers" mapstructure:"containers"`
Individual bool `yaml:"individual" mapstructure:"individual"`
}
type LibraryConfig struct {
BaseURL string `yaml:"base_url" mapstructure:"base_url"`
UseCDN bool `yaml:"use_cdn" mapstructure:"use_cdn"`
CDNBaseURL string `yaml:"cdn_base_url" mapstructure:"cdn_base_url"`
Minified bool `yaml:"minified" mapstructure:"minified"`
Version string `yaml:"version" mapstructure:"version"`
}