fleetflow_atom/
error.rs

1use std::path::PathBuf;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum FlowError {
6    #[error("KDLパースエラー: {0}")]
7    KdlParse(#[from] kdl::KdlError),
8
9    #[error("ファイル読み込みエラー: {0}")]
10    Io(#[from] std::io::Error),
11
12    #[error("IO エラー: {path}\n理由: {message}")]
13    IoError { path: PathBuf, message: String },
14
15    #[error("無効な設定: {0}")]
16    InvalidConfig(String),
17
18    #[error("テンプレートエラー: {file}\n理由: {message}")]
19    TemplateError {
20        file: PathBuf,
21        line: Option<usize>,
22        message: String,
23    },
24
25    #[error("テンプレート展開エラー: {0}")]
26    TemplateRenderError(String),
27
28    #[error("ファイル発見エラー: {path}\n理由: {message}")]
29    DiscoveryError { path: PathBuf, message: String },
30
31    #[error(
32        "プロジェクトルートが見つかりません\n探索開始位置: {0}\nヒント: flow.kdl ファイルを含むディレクトリで実行してください"
33    )]
34    ProjectRootNotFound(PathBuf),
35
36    #[error("サービスが見つかりません: {0}")]
37    ServiceNotFound(String),
38
39    #[error("環境が見つかりません: {0}")]
40    EnvironmentNotFound(String),
41
42    #[error("循環依存が検出されました: {0}")]
43    CircularDependency(String),
44}
45
46pub type Result<T> = std::result::Result<T, FlowError>;