liftoff 0.1.1

Get your coding project off the ground fast. See repo
Documentation
use git2;
use regex;
use reqwest;
use sane;
use std::{fmt, io};

/// Default error type for kick
#[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)
    }
}