Skip to main content

cargo_publish_ordered/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum Error {
5    #[error("IO Error:{0}")]
6    Io(#[from] std::io::Error),
7    #[error("Cargo metadata parsing error:{0}")]
8    Metadata(#[from] cargo_metadata::Error),
9    #[error("Dependency graph contains loops")]
10    CyclicDependency,
11    #[error("Cargo publish failed: crate {0}, error: {1}")]
12    Publish(String, String),
13    #[error("User cancels publish")]
14    UserCancelled,
15    #[error("Invalid command line arguments: {0}")]
16    Dialog(dialoguer::Error),
17    #[error("Cache serialization error:{0}")]
18    Serialization(#[from] serde_json::Error),
19    #[error("Failed to read file `{path}`: {source}")]
20    FileRead {
21        path: String,
22        source: std::io::Error,
23    },
24    #[error("Failed to write to file `{path}`: {source}")]
25    FileWrite {
26        path: String,
27        source: std::io::Error,
28    },
29    #[error("Failed to parse TOML in `{path}`: {source}")]
30    TomlParse {
31        path: String,
32        source: toml_edit::TomlError,
33    },
34    #[error("Dependencies in `{path}` are not sorted")]
35    NotSorted { path: String },
36    #[error("Invalid sort order '{0}', must be 'asc' or 'desc'")]
37    InvalidSortOrder(String),
38}
39
40impl From<dialoguer::Error> for Error {
41    fn from(err: dialoguer::Error) -> Self {
42        Error::Dialog(err)
43    }
44}