dockerfile_parser/
error.rs1use pest::iterators::Pair;
4use snafu::Snafu;
5
6use crate::parser::*;
7
8#[derive(Debug, Snafu)]
10#[snafu(visibility(pub(crate)))]
11pub enum Error {
12 #[snafu(display(
13 "could not parse Dockerfile: {}", source
14 ))]
15 ParseError {
16 source: pest::error::Error<Rule>
17 },
18
19 #[snafu(display(
20 "unable to parse Dockerfile: {}", message
21 ))]
22 GenericParseError {
23 message: String
24 },
25
26 #[snafu(display(
27 "error unescaping string: {:?}", source
28 ))]
29 UnescapeError {
30 source: enquote::Error
31 },
32
33 #[snafu(display(
34 "unable to parse Dockerfile"
35 ))]
36 UnknownParseError,
37
38 #[snafu(display(
39 "could not read Dockerfile: {}", source
40 ))]
41 ReadError {
42 source: std::io::Error
43 },
44
45 #[snafu(display(
46 "could not convert instruction '{:?}' to desired type '{}'", from, to
47 ))]
48 ConversionError {
49 from: String,
50 to: String
51 }
52}
53
54pub type Result<T, E = Error> = std::result::Result<T, E>;
56
57pub(crate) fn unexpected_token(record: Pair<Rule>) -> Error {
59 Error::GenericParseError {
60 message: format!("unexpected token {:?}", record.as_rule())
61 }
62}