1use std::{io, path::PathBuf};
2
3use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum Error {
7 #[error("'{0}' exists but is not a directory")]
8 ExpectedDirectory(PathBuf),
9 #[error("io failed for '{path}': '{source}'")]
10 FileIo {
11 path: PathBuf,
12 #[source]
13 source: io::Error,
14 },
15 #[error("failed to write to stdout or stderr: '{0}'")]
16 StdioWriteFail(#[source] io::Error),
17 #[error("Unrecognized source {0}")]
18 UnrecognizedSource(PathBuf),
19 #[error(transparent)]
20 YamlSerError(#[from] serde_yaml::Error),
21 #[error(transparent)]
22 FontIrError(#[from] fontir::error::Error),
23 #[error(transparent)]
24 Backend(#[from] fontbe::error::Error),
25 #[error("Missing file '{0}'")]
26 FileExpected(PathBuf),
27 #[error("Unable to proceed; {0} jobs stuck pending")]
28 UnableToProceed(usize),
29 #[error("A task panicked: '{0}'")]
30 Panic(String),
31}