//! Errors returned by [`crate::config::parse_config`]. use thiserror::Error; /// Why a `.forge/ci.toml` file was rejected. #[derive(Debug, Clone, PartialEq, Eq, Error)] pub enum ConfigError { #[error("ci config is {size} bytes, the limit is {max} bytes")] TooLarge { size: usize, max: usize }, #[error("invalid TOML: {0}")] Toml(String), #[error("no jobs are defined")] NoJobs, #[error("{count} jobs are defined, the limit is {max}")] TooManyJobs { count: usize, max: usize }, #[error("invalid job name {0:?}: must match ^[a-z0-9][a-z0-9_-]{{0,39}}$")] InvalidJobName(String), #[error("job {job:?} needs unknown job {need:?}")] UnknownNeed { job: String, need: String }, #[error("jobs form a cycle, involving job {job:?}")] Cycle { job: String }, #[error("job {job:?}: image must be non-empty and contain no whitespace")] InvalidImage { job: String }, #[error("job {job:?}: run must not be empty")] EmptyRun { job: String }, #[error("job {job:?}: invalid secret name {name:?}: must match ^[A-Z_][A-Z0-9_]{{0,63}}$")] InvalidSecretName { job: String, name: String }, #[error("job {job:?}: invalid env name {name:?}: must match ^[A-Z_][A-Z0-9_]{{0,63}}$")] InvalidEnvName { job: String, name: String }, #[error("job {job:?}: invalid artifact pattern {pattern:?}: {reason}")] InvalidArtifactGlob { job: String, pattern: String, reason: String, }, #[error("job {job:?}: invalid runner label {label:?}")] InvalidRunsOn { job: String, label: String }, #[error("job {job:?}: timeout_minutes must be between 1 and 360, got {value}")] InvalidTimeout { job: String, value: u32 }, #[error("invalid {kind} glob {pattern:?}: {reason}")] InvalidTriggerGlob { kind: &'static str, pattern: String, reason: String, }, }