Mercurial > hg
comparison rust/rhg/src/error.rs @ 46436:252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Differential Revision: https://phab.mercurial-scm.org/D9876
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 26 Jan 2021 20:31:26 +0100 |
parents | 2e2033081274 |
children | b274aa2f20fd |
comparison
equal
deleted
inserted
replaced
46435:2e2033081274 | 46436:252d1bdba33d |
---|---|
1 use crate::exitcode; | 1 use crate::exitcode; |
2 use crate::ui::utf8_to_local; | |
2 use crate::ui::UiError; | 3 use crate::ui::UiError; |
3 use format_bytes::format_bytes; | 4 use format_bytes::format_bytes; |
4 use hg::operations::FindRootError; | 5 use hg::operations::{ |
6 CatRevError, DebugDataError, FindRootError, ListDirstateTrackedFilesError, | |
7 ListRevTrackedFilesError, | |
8 }; | |
5 use hg::requirements::RequirementsError; | 9 use hg::requirements::RequirementsError; |
6 use hg::utils::files::get_bytes_from_path; | 10 use hg::utils::files::get_bytes_from_path; |
7 use std::convert::From; | 11 use std::convert::From; |
8 use std::path::PathBuf; | 12 use std::path::PathBuf; |
9 | 13 |
92 CommandError::CurrentDirNotFound(e) | 96 CommandError::CurrentDirNotFound(e) |
93 } | 97 } |
94 } | 98 } |
95 } | 99 } |
96 } | 100 } |
101 | |
102 impl From<(DebugDataError, &str)> for CommandError { | |
103 fn from((err, rev): (DebugDataError, &str)) -> CommandError { | |
104 match err { | |
105 DebugDataError::IoError(err) => CommandError::Abort(Some( | |
106 utf8_to_local(&format!("abort: {}\n", err)).into(), | |
107 )), | |
108 DebugDataError::InvalidRevision => CommandError::Abort(Some( | |
109 utf8_to_local(&format!( | |
110 "abort: invalid revision identifier{}\n", | |
111 rev | |
112 )) | |
113 .into(), | |
114 )), | |
115 DebugDataError::AmbiguousPrefix => CommandError::Abort(Some( | |
116 utf8_to_local(&format!( | |
117 "abort: ambiguous revision identifier{}\n", | |
118 rev | |
119 )) | |
120 .into(), | |
121 )), | |
122 DebugDataError::UnsuportedRevlogVersion(version) => { | |
123 CommandError::Abort(Some( | |
124 utf8_to_local(&format!( | |
125 "abort: unsupported revlog version {}\n", | |
126 version | |
127 )) | |
128 .into(), | |
129 )) | |
130 } | |
131 DebugDataError::CorruptedRevlog => { | |
132 CommandError::Abort(Some("abort: corrupted revlog\n".into())) | |
133 } | |
134 DebugDataError::UnknowRevlogDataFormat(format) => { | |
135 CommandError::Abort(Some( | |
136 utf8_to_local(&format!( | |
137 "abort: unknow revlog dataformat {:?}\n", | |
138 format | |
139 )) | |
140 .into(), | |
141 )) | |
142 } | |
143 } | |
144 } | |
145 } | |
146 | |
147 impl From<(ListRevTrackedFilesError, &str)> for CommandError { | |
148 fn from((err, rev): (ListRevTrackedFilesError, &str)) -> CommandError { | |
149 match err { | |
150 ListRevTrackedFilesError::IoError(err) => CommandError::Abort( | |
151 Some(utf8_to_local(&format!("abort: {}\n", err)).into()), | |
152 ), | |
153 ListRevTrackedFilesError::InvalidRevision => { | |
154 CommandError::Abort(Some( | |
155 utf8_to_local(&format!( | |
156 "abort: invalid revision identifier {}\n", | |
157 rev | |
158 )) | |
159 .into(), | |
160 )) | |
161 } | |
162 ListRevTrackedFilesError::AmbiguousPrefix => { | |
163 CommandError::Abort(Some( | |
164 utf8_to_local(&format!( | |
165 "abort: ambiguous revision identifier {}\n", | |
166 rev | |
167 )) | |
168 .into(), | |
169 )) | |
170 } | |
171 ListRevTrackedFilesError::UnsuportedRevlogVersion(version) => { | |
172 CommandError::Abort(Some( | |
173 utf8_to_local(&format!( | |
174 "abort: unsupported revlog version {}\n", | |
175 version | |
176 )) | |
177 .into(), | |
178 )) | |
179 } | |
180 ListRevTrackedFilesError::CorruptedRevlog => { | |
181 CommandError::Abort(Some("abort: corrupted revlog\n".into())) | |
182 } | |
183 ListRevTrackedFilesError::UnknowRevlogDataFormat(format) => { | |
184 CommandError::Abort(Some( | |
185 utf8_to_local(&format!( | |
186 "abort: unknow revlog dataformat {:?}\n", | |
187 format | |
188 )) | |
189 .into(), | |
190 )) | |
191 } | |
192 } | |
193 } | |
194 } | |
195 | |
196 impl From<(CatRevError, &str)> for CommandError { | |
197 fn from((err, rev): (CatRevError, &str)) -> CommandError { | |
198 match err { | |
199 CatRevError::IoError(err) => CommandError::Abort(Some( | |
200 utf8_to_local(&format!("abort: {}\n", err)).into(), | |
201 )), | |
202 CatRevError::InvalidRevision => CommandError::Abort(Some( | |
203 utf8_to_local(&format!( | |
204 "abort: invalid revision identifier {}\n", | |
205 rev | |
206 )) | |
207 .into(), | |
208 )), | |
209 CatRevError::AmbiguousPrefix => CommandError::Abort(Some( | |
210 utf8_to_local(&format!( | |
211 "abort: ambiguous revision identifier {}\n", | |
212 rev | |
213 )) | |
214 .into(), | |
215 )), | |
216 CatRevError::UnsuportedRevlogVersion(version) => { | |
217 CommandError::Abort(Some( | |
218 utf8_to_local(&format!( | |
219 "abort: unsupported revlog version {}\n", | |
220 version | |
221 )) | |
222 .into(), | |
223 )) | |
224 } | |
225 CatRevError::CorruptedRevlog => { | |
226 CommandError::Abort(Some("abort: corrupted revlog\n".into())) | |
227 } | |
228 CatRevError::UnknowRevlogDataFormat(format) => { | |
229 CommandError::Abort(Some( | |
230 utf8_to_local(&format!( | |
231 "abort: unknow revlog dataformat {:?}\n", | |
232 format | |
233 )) | |
234 .into(), | |
235 )) | |
236 } | |
237 } | |
238 } | |
239 } | |
240 | |
241 impl From<ListDirstateTrackedFilesError> for CommandError { | |
242 fn from(err: ListDirstateTrackedFilesError) -> Self { | |
243 match err { | |
244 ListDirstateTrackedFilesError::IoError(err) => { | |
245 CommandError::Abort(Some( | |
246 utf8_to_local(&format!("abort: {}\n", err)).into(), | |
247 )) | |
248 } | |
249 ListDirstateTrackedFilesError::ParseError(_) => { | |
250 CommandError::Abort(Some( | |
251 // TODO find a better error message | |
252 b"abort: parse error\n".to_vec(), | |
253 )) | |
254 } | |
255 } | |
256 } | |
257 } |