use std::io::{Error as IOError};
use std::path::PathBuf;
use thiserror::Error;
pub use anyhow::{Result, Error};
#[derive(Debug, Error)]
pub enum XcpError {
#[error("Unknown file-type: {0}")]
UnknownFiletype(PathBuf),
#[error("Unknown driver: {0}")]
UnknownDriver(String),
#[error("Invalid arguments: {0}")]
InvalidArguments(&'static str),
#[error("Invalid source: {0}")]
InvalidSource(&'static str),
#[error("Invalid destination: {0}")]
InvalidDestination(&'static str),
#[error("Destination Exists: {0}, {1}")]
DestinationExists(&'static str, PathBuf),
#[error("IO Error: {0}")]
IOError(IOError),
#[error("Early shutdown: {0}")]
EarlyShutdown(&'static str),
#[error("Unsupported OS")]
UnsupportedOS(&'static str),
#[error("Unsupported operation; this function should never be called on this OS.")]
UnsupportedOperation,
}