cargo_publish_ordered/
error.rs1use 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}