72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
// Package config owns application configuration structures, defaults, loading,
|
|
// precedence, and validation.
|
|
package config
|
|
|
|
import "time"
|
|
|
|
type MissingSourcePolicy string
|
|
|
|
const (
|
|
MissingSourceError MissingSourcePolicy = "error"
|
|
MissingSourceWarn MissingSourcePolicy = "warn"
|
|
MissingSourceNone MissingSourcePolicy = "none"
|
|
)
|
|
|
|
type Config struct {
|
|
WeatherAPI WeatherAPIConfig `yaml:"weather_api"`
|
|
MissingSource MissingSourceConfig `yaml:"missing_source"`
|
|
Scriptorium ScriptoriumConfig `yaml:"scriptorium"`
|
|
Workspace WorkspaceConfig `yaml:"workspace"`
|
|
Reports ReportOutputConfig `yaml:"reports"`
|
|
Dayparts []DaypartConfig `yaml:"dayparts"`
|
|
RecentChange RecentChangeConfig `yaml:"recent_change"`
|
|
}
|
|
|
|
type WeatherAPIConfig struct {
|
|
BaseURL string `yaml:"base_url"`
|
|
Timeout time.Duration `yaml:"timeout"`
|
|
Precision int `yaml:"precision"`
|
|
Units string `yaml:"units"`
|
|
Timezone string `yaml:"timezone"`
|
|
Format string `yaml:"format"`
|
|
}
|
|
|
|
type MissingSourceConfig struct {
|
|
Default MissingSourcePolicy `yaml:"default"`
|
|
Sources map[string]MissingSourcePolicy `yaml:"sources"`
|
|
}
|
|
|
|
type ScriptoriumConfig struct {
|
|
Binary string `yaml:"binary"`
|
|
ConfigPath string `yaml:"config_path"`
|
|
Profile string `yaml:"profile"`
|
|
Timeout time.Duration `yaml:"timeout"`
|
|
ExtraArgs []string `yaml:"extra_args"`
|
|
}
|
|
|
|
type WorkspaceConfig struct {
|
|
Root string `yaml:"root"`
|
|
SnapshotsDir string `yaml:"snapshots_dir"`
|
|
ReportsDir string `yaml:"reports_dir"`
|
|
DataPackagesDir string `yaml:"data_packages_dir"`
|
|
PreflightDir string `yaml:"preflight_dir"`
|
|
}
|
|
|
|
type ReportOutputConfig struct {
|
|
OutputDir string `yaml:"output_dir"`
|
|
Paths map[string]string `yaml:"paths"`
|
|
}
|
|
|
|
type DaypartConfig struct {
|
|
Name string `yaml:"name"`
|
|
Start string `yaml:"start"`
|
|
End string `yaml:"end"`
|
|
}
|
|
|
|
type RecentChangeConfig struct {
|
|
TemperatureDegrees float64 `yaml:"temperature_degrees"`
|
|
PrecipProbabilityPoints int `yaml:"precip_probability_points"`
|
|
WindGustMilesPerHour int `yaml:"wind_gust_miles_per_hour"`
|
|
PrecipTimingShiftMinutes int `yaml:"precip_timing_shift_minutes"`
|
|
}
|