ft-cli 0.1.0

ft-cli is a tool for syncing a git repo or a local folder to a FifthTry account
#[derive(thiserror::Error, Debug)]
pub enum Error {
    #[error("cannot parse config file {error:?}")]
    ConfigFileFTDError { error: ftd::p1::Error },

    #[error("cannot parse config file {error:?}")]
    ConfigFileParseError { error: String },

    #[error("RealmError: {error:?}")]
    RealmError { error: realm_client::Error },

    #[error("Utf8Error: {error:?}")]
    Utf8Error { error: std::string::FromUtf8Error },

    #[error("IOError: {error:?}")]
    IOError { error: std::io::Error },

    #[error("cannot read file: {}, {}", _0, _1)]
    ReadError(std::io::Error, String),

    #[error("api status code: {}", _0)]
    APIResponseNotOk(String),

    #[error("DeserializeError: {}", _0)]
    DeserializeError(String),

    #[error("ResponseError: {}", _0)]
    ResponseError(String),

    #[error("UnknownError: {}", _0)]
    UnknownError(String),

    #[error("IDError: {}", _0)]
    IDError(String),
}

impl From<realm_client::Error> for Error {
    fn from(e: realm_client::Error) -> Self {
        Error::RealmError { error: e }
    }
}

impl From<ftd::p1::Error> for Error {
    fn from(e: ftd::p1::Error) -> Self {
        Error::ConfigFileFTDError { error: e }
    }
}

impl From<std::io::Error> for Error {
    fn from(e: std::io::Error) -> Self {
        Error::IOError { error: e }
    }
}

impl From<std::string::FromUtf8Error> for Error {
    fn from(e: std::string::FromUtf8Error) -> Self {
        Error::Utf8Error { error: e }
    }
}