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