use thiserror::Error;
#[derive(Error, Debug)]
pub enum DeviceError {
#[error("Device not found: {0}")]
NotFound(String),
#[error("Root password not configured for device: {0}")]
RootPasswordNotConfigured(String),
#[error("Connection failed: {0}")]
ConnectionFailed(String),
#[error("SSH error: {0}")]
SshError(#[from] anyhow::Error),
#[error("Device validation failed: {0}")]
ValidationError(String),
}
#[derive(Error, Debug)]
pub enum ConfigError {
#[error("Failed to read config: {0}")]
ReadError(#[from] std::io::Error),
#[error("Invalid config format: {0}")]
ParseError(#[from] serde_json::Error),
#[error("Config validation failed: {0}")]
ValidationError(String),
#[error("Config file not found at: {0}")]
NotFound(String),
}
#[derive(Error, Debug)]
pub enum InputError {
#[error("Invalid coordinates: {0}")]
InvalidCoordinates(String),
#[error("Script execution failed: {0}")]
ScriptExecutionFailed(String),
#[error("D-Bus command failed: {0}")]
DbusCommandFailed(String),
#[error(transparent)]
DeviceError(#[from] DeviceError),
}
#[derive(Error, Debug)]
pub enum InstallError {
#[error("Invalid RPM file: {0}")]
InvalidRpmFile(String),
#[error("Package installation failed: {0}")]
InstallationFailed(String),
#[error(transparent)]
DeviceError(#[from] DeviceError),
}