use thiserror::Error;
use std::path::PathBuf;
#[derive(Error, Debug)]
pub enum WorkspaceError {
#[error("workspace is missing a .licensarc config file")]
MissingConfigFile,
#[error("workspace is missing a .licensaignore file")]
MissingIgnoreFile,
#[error("licensa is already configured for {0}")]
AlreadyConfigured(PathBuf),
#[error(".licensarc config file already exists in {0}")]
ConfigFileAlreadyExists(PathBuf),
#[error(".licensaignore file already exists in {0}")]
IgnoreFileAlreadyExists(PathBuf),
#[error("invalid config data type. Provided value must be an object")]
InvalidConfigDataType,
#[error(transparent)]
Data(#[from] serde_json::error::Error),
#[error(transparent)]
IO(#[from] std::io::Error),
#[error("path {0} is not a directory")]
NotADirectory(PathBuf),
#[error(transparent)]
Generic(#[from] anyhow::Error),
}
pub type WorkspaceResult<T> = anyhow::Result<T, WorkspaceError>;