Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum DockerError {
    #[error("Failed to read file: {0}")]
    FileError(#[from] std::io::Error),
    #[error("Failed to parse yaml: {0}")]
    YamlError(#[from] serde_yaml::Error),
    #[error("Failed to parse dockerfile: {0}")]
    DockerfileError(String),
    #[cfg(feature = "deploy")]
    #[error("Docker API error: {0}")]
    BollardError(#[from] bollard::errors::Error),
    #[cfg(feature = "deploy")]
    #[error("Invalid IPAM configuration")]
    InvalidIpamConfig,
    #[cfg(feature = "deploy")]
    #[error("Container {0} is not running")]
    ContainerNotRunning(String),
    #[cfg(feature = "deploy")]
    #[error("Network creation failed: {0}")]
    NetworkCreationError(String),
    #[error("Invalid resource limit: {0}")]
    InvalidResourceLimit(String),
    #[error("Validation error: {0}")]
    ValidationError(String),
}