use thiserror::Error;
pub const SETTINGS_ERROR: &str = "Uh Oh, looks like a settings issue! By default I look for a settings.toml file and override with env variables.";
pub(crate) fn surf_to_tool_error(e: surf::Error) -> ToolError {
ToolError::General(e.into_inner())
}
#[derive(Error, Debug)]
pub enum ToolError {
#[error(transparent)]
General(#[from] anyhow::Error),
#[error(transparent)]
Url(#[from] url::ParseError),
#[error(transparent)]
Json(#[from] serde_json::Error),
#[error(transparent)]
Int(#[from] std::num::ParseIntError),
#[error(transparent)]
Io(#[from] std::io::Error),
#[error(transparent)]
Bool(#[from] std::str::ParseBoolError),
#[error("Invalid variable query format: {0}. Expected format: key:operator:value")]
InvalidVariableQuery(String),
#[error("Invalid tag query format: {0}. Expected format: operator:name")]
InvalidTagQuery(String),
#[error("Invalid query operator: {0}. Expected one of: ==, !=, ~=, !~=")]
InvalidQueryOperator(String),
}