light_fw_cli_core/
error.rs1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum Error {
5 #[error("IO error: {0}")]
6 Io(#[from] std::io::Error),
7
8 #[error("TOML parse error: {0}")]
9 Toml(#[from] toml_edit::TomlError),
10
11 #[error("TOML serialize error: {0}")]
12 TomlSer(#[from] toml_edit::ser::Error),
13
14 #[error("JSON error: {0}")]
15 Json(#[from] serde_json::Error),
16
17 #[error("Semver error: {0}")]
18 Semver(#[from] semver::Error),
19
20 #[error("Walkdir error: {0}")]
21 Walkdir(#[from] walkdir::Error),
22
23 #[error("Ignore error: {0}")]
24 Ignore(#[from] ignore::Error),
25
26 #[error("Template parse error: {0}")]
27 TemplateParse(String),
28
29 #[error("Manifest error: {0}")]
30 Manifest(String),
31
32 #[error("команда `{program}` завершилась с кодом {code}: {stderr}")]
34 CommandFailed {
35 program: String,
36 code: i32,
37 stderr: String,
38 },
39
40 #[error("команда `{0}` не найдена (установлен ли инструмент?)")]
42 CommandNotFound(String),
43
44 #[error("компонент `{0}` не найден")]
46 ComponentNotFound(String),
47
48 #[error("`{0}` не является компонентом Light: имя должно начинаться с `light-fw-`")]
50 NotComponent(String),
51
52 #[error("компонент `{component}` несовместим: {reason}")]
54 Incompatible { component: String, reason: String },
55
56 #[error("компонент `{0}` не установлен")]
58 NotInstalled(String),
59
60 #[error("конфликт компонентов: {0}")]
62 Conflict(String),
63
64 #[error("от компонента `{0}` зависят другие компоненты — удалите их вместе")]
66 InUse(String),
67
68 #[error("операция отменена")]
70 Aborted,
71
72 #[error(
74 "компонент `{0}` не найден в vendor/, установите его без `--offline` на машине с сетью"
75 )]
76 Offline(String),
77
78 #[error("ошибка light.lock: {0}")]
80 Lockfile(String),
81
82 #[error("ошибка резервной копии: {0}")]
84 Backup(String),
85
86 #[error("ошибка публикации: {0}")]
88 Publish(String),
89
90 #[error("ошибка init: {0}")]
92 Init(String),
93
94 #[error(
96 "crate {name} v{version} already published; bump version in Cargo.toml before publishing"
97 )]
98 AlreadyPublished { name: String, version: String },
99
100 #[cfg(feature = "network")]
102 #[error("сетевой запрос не удался: {0}")]
103 Http(#[from] reqwest::Error),
104}
105
106pub type Result<T> = std::result::Result<T, Error>;