dvc 0.1.0

A small crate to fetch data from a DVC repository.
Documentation
use crate::error::FileError::ParseIni;
#[cfg(feature = "python_dvc")]
use pyo3::PyErr;
use std::io;

pub type Result<T> = std::result::Result<T, Error>;

#[derive(Debug)]
pub enum TransferError {
  Read(std::io::Error),
  Write(std::io::Error),
  UnimplementedStorageType,
  ThreadError,
}

#[derive(Debug)]
pub enum RemoteError {
  InconsistentStorageTypes,
  UnimplementedStorage,
  UnexpectedUrl,
  BucketError(String),
}

#[derive(Debug)]
pub enum FileError {
  IO(std::io::Error),
  ParseIni(ini::Error),
  ParseYaml(serde_yaml::Error),
  Structure(String),
}

#[derive(Debug)]
pub enum Error {
  #[cfg(feature = "python_dvc")]
  Dvc(PyErr),
  File(FileError),
  Git(String),
  Store(RemoteError),
  Transfer(TransferError),
}

#[cfg(feature = "python_dvc")]
impl From<PyErr> for Error {
  fn from(py_err: PyErr) -> Self {
    Error::Dvc(py_err)
  }
}

impl From<std::io::Error> for Error {
  fn from(io_err: io::Error) -> Self {
    Error::File(FileError::IO(io_err))
  }
}

impl From<git2::Error> for Error {
  fn from(git_err: git2::Error) -> Self {
    Error::Git(git_err.to_string())
  }
}

impl From<ini::Error> for Error {
  fn from(ini_error: ini::Error) -> Self {
    Error::File(ParseIni(ini_error))
  }
}