Skip to main content

prj_core/
error.rs

1use std::path::PathBuf;
2
3/// Errors produced by core `prj` operations.
4#[derive(Debug, thiserror::Error)]
5pub enum PrjError {
6    #[error("project not found: {0}")]
7    ProjectNotFound(String),
8
9    #[error("project already registered: {0}")]
10    ProjectAlreadyExists(String),
11
12    #[error("path does not exist: {}", .0.display())]
13    PathNotFound(PathBuf),
14
15    #[error("path is not a directory: {}", .0.display())]
16    NotADirectory(PathBuf),
17
18    #[error("failed to read database: {0}")]
19    DatabaseRead(#[source] Box<dyn std::error::Error + Send + Sync>),
20
21    #[error("failed to write database: {0}")]
22    DatabaseWrite(#[source] Box<dyn std::error::Error + Send + Sync>),
23
24    #[error("git error: {0}")]
25    Git(#[from] git2::Error),
26
27    #[error("io error: {0}")]
28    Io(#[from] std::io::Error),
29
30    #[error("git clone failed: {0}")]
31    CloneFailed(String),
32
33    #[error("could not determine clone destination from args: {0}")]
34    CloneDestUnknown(String),
35
36    #[error("no target projects specified (use --project, --tag, or --all)")]
37    NoTargetProjects,
38
39    #[error("manifest error: {0}")]
40    Manifest(String),
41}