1use core::{
2 error::Error,
3 fmt::{self, Display, Formatter},
4};
5use glob::{GlobError, PatternError};
6use stak_compiler::CompileError;
7use std::env::VarError;
8use tokio::{io, task::JoinError};
9
10#[derive(Debug)]
12pub enum BuildError {
13 Compile(CompileError),
15 EnvironmentVariable(VarError),
17 Io(io::Error),
19 Join(JoinError),
21 Glob(GlobError),
23 GlobPattern(PatternError),
25}
26
27impl From<CompileError> for BuildError {
28 fn from(error: CompileError) -> Self {
29 Self::Compile(error)
30 }
31}
32
33impl From<GlobError> for BuildError {
34 fn from(error: GlobError) -> Self {
35 Self::Glob(error)
36 }
37}
38
39impl From<io::Error> for BuildError {
40 fn from(error: io::Error) -> Self {
41 Self::Io(error)
42 }
43}
44
45impl From<JoinError> for BuildError {
46 fn from(error: JoinError) -> Self {
47 Self::Join(error)
48 }
49}
50
51impl From<PatternError> for BuildError {
52 fn from(error: PatternError) -> Self {
53 Self::GlobPattern(error)
54 }
55}
56
57impl From<VarError> for BuildError {
58 fn from(error: VarError) -> Self {
59 Self::EnvironmentVariable(error)
60 }
61}
62
63impl Error for BuildError {}
64
65impl Display for BuildError {
66 fn fmt(&self, formatter: &mut Formatter) -> fmt::Result {
67 match self {
68 Self::Compile(error) => write!(formatter, "{error}"),
69 Self::EnvironmentVariable(error) => write!(formatter, "{error}"),
70 Self::Glob(error) => write!(formatter, "{error}"),
71 Self::GlobPattern(error) => write!(formatter, "{error}"),
72 Self::Io(error) => write!(formatter, "{error}"),
73 Self::Join(error) => write!(formatter, "{error}"),
74 }
75 }
76}