use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("invalid URL: {0}")]
InvalidUrl(String),
#[error("failed to create HTTP client: {0}")]
HttpClient(String),
#[error("HTTP request failed: {0}")]
HttpRequest(String),
#[error("HTTP error: status {0}")]
HttpStatus(u16),
#[error("site does not appear to be WordPress")]
NotWordPress,
#[error("invalid output format: '{0}' (valid: human, json, none)")]
InvalidOutputFormat(String),
#[error("invalid output detail: '{0}' (valid: all, nok)")]
InvalidOutputDetail(String),
#[error("invalid output sort: '{0}' (valid: status, name)")]
InvalidOutputSort(String),
#[error("output failed: {0}")]
OutputFailed(#[source] std::io::Error),
#[error("JSON serialization failed")]
SerializationFailed(#[from] serde_json::Error),
}