use git2;
use regex;
use reqwest;
use sane;
use std::{fmt, io};
#[derive(Debug)]
pub enum KickError {
ParseError(sane::de::Error),
BracketsError(String),
VariableNotFoundError(String),
RequestError(reqwest::Error),
RequestStatusError((String, reqwest::StatusCode)),
EmptyFieldError(String),
VariableNotSetError(String),
LicenseAuthorError(String),
InvalidLicenseError(String),
InvalidConfigFileError(String),
InvalidUrlError(String),
GitError(git2::Error),
RegexError(regex::Error),
IdentifierError(String),
InvalidCIError(String),
FileError(io::Error),
}
impl fmt::Display for KickError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use KickError::*;
match self {
BracketsError(e) => write!(f, "Missing bracket in variable \"{}\".", e),
ParseError(e) => write!(f, "Couldn't parse config file: \"{}\".", e),
RequestError(e) => write!(f, "Web connection error: {}.", e),
RequestStatusError(e) => write!(f, "Website {} returned code: {}.", e.0, e.1),
VariableNotFoundError(e) => write!(f, "Variable \"{}\" not found!", e),
GitError(e) => write!(f, "Git error: {}.", e),
EmptyFieldError(e) => write!(f, "Field \"{}\" empty!", e),
RegexError(e) => write!(f, "Can't turn into regex: {}.", e),
LicenseAuthorError(e) => write!(f, "Author must be set for \"{}\".", e),
InvalidLicenseError(e) => write!(f, "License \"{}\" unknown.", e),
InvalidConfigFileError(e) => write!(f, "Config \"{}\" unknown/doesn't exist.", e),
InvalidCIError(e) => write!(f, "Invalid ci service \"{}\".", e),
VariableNotSetError(e) => write!(f, "Variable \"{}\" used, but not set!", e),
InvalidUrlError(e) => write!(f, "Invalid url: \"{}\"", e),
IdentifierError(e) => write!(f, "Identifier \"{}\" invalid!", e),
FileError(e) => write!(f, "File I/O error: {}", e),
}
}
}
impl From<io::Error> for KickError {
fn from(error: io::Error) -> Self {
KickError::FileError(error)
}
}
impl From<sane::de::Error> for KickError {
fn from(error: sane::de::Error) -> Self {
KickError::ParseError(error)
}
}
impl From<reqwest::Error> for KickError {
fn from(error: reqwest::Error) -> Self {
KickError::RequestError(error)
}
}
impl From<git2::Error> for KickError {
fn from(error: git2::Error) -> Self {
KickError::GitError(error)
}
}
impl From<regex::Error> for KickError {
fn from(error: regex::Error) -> Self {
KickError::RegexError(error)
}
}