Skip to main content

changeset_project/
error.rs

1use std::path::PathBuf;
2
3use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum ProjectError {
7    #[error("IO error")]
8    Io(#[from] std::io::Error),
9
10    #[error("TOML parse error")]
11    TomlParse(#[from] toml::de::Error),
12
13    #[error("no Cargo.toml found traversing from '{start_dir}'")]
14    NotFound { start_dir: PathBuf },
15
16    #[error("failed to read manifest at '{path}'")]
17    ManifestRead {
18        path: PathBuf,
19        #[source]
20        source: std::io::Error,
21    },
22
23    #[error("failed to parse manifest at '{path}'")]
24    ManifestParse {
25        path: PathBuf,
26        #[source]
27        source: toml::de::Error,
28    },
29
30    #[error("manifest at '{path}' missing required field '{field}'")]
31    MissingField { path: PathBuf, field: &'static str },
32
33    #[error("invalid version '{version}' in package at '{path}'")]
34    InvalidVersion {
35        path: PathBuf,
36        version: String,
37        #[source]
38        source: semver::Error,
39    },
40
41    #[error("invalid glob pattern '{pattern}'")]
42    GlobPattern {
43        pattern: String,
44        #[source]
45        source: globset::Error,
46    },
47
48    #[error("failed to create directory '{path}'")]
49    DirectoryCreate {
50        path: PathBuf,
51        #[source]
52        source: std::io::Error,
53    },
54}