2 releases
Uses new Rust 2024
| 0.1.1 | Nov 9, 2025 |
|---|---|
| 0.1.0 | Nov 9, 2025 |
#1635 in Development tools
Used in 2 crates
65KB
1.5K
SLoC
fleetflow-atom
FleetFlowのコア機能を提供するライブラリクレート。
概要
fleetflow-atomは、FleetFlowの中核となる機能を提供します:
- KDLパーサー - KDL設定ファイルの解析
- データモデル - Flow、Service、Stage、Processなどの構造体
- ローダー - プロジェクト全体の設定読み込み
- テンプレートエンジン - 変数展開とテンプレート処理
- ファイル検出 - 自動的な設定ファイルの発見
使用例
use fleetflow_atom::{Flow, Service, Stage, parser};
// KDL文字列をパース
let kdl_content = r#"
service "postgres" {
version "16"
}
stage "local" {
service "postgres"
}
"#;
let flow = parser::parse_kdl_string(kdl_content, "example".to_string())?;
// Flowからサービスにアクセス
if let Some(postgres) = flow.services.get("postgres") {
println!("PostgreSQL version: {:?}", postgres.version);
}
主な型
Flow
プロセスの設計図。データベースに格納可能。
pub struct Flow {
pub name: String,
pub services: HashMap<String, Service>,
pub stages: HashMap<String, Stage>,
}
Service
コンテナサービスの定義。
pub struct Service {
pub image: Option<String>,
pub version: Option<String>,
pub command: Option<String>,
pub ports: Vec<Port>,
pub environment: HashMap<String, String>,
pub volumes: Vec<Volume>,
pub depends_on: Vec<String>,
}
Stage
環境(local、dev、stg、prdなど)の定義。
pub struct Stage {
pub services: Vec<String>,
pub variables: HashMap<String, String>,
}
Process
実行中のプロセス情報。データベースに格納可能。
pub struct Process {
pub id: String,
pub flow_name: String,
pub stage_name: String,
pub service_name: String,
pub container_id: Option<String>,
pub state: ProcessState,
pub started_at: i64,
// ... その他のフィールド
}
機能
KDLパーサー
KDL形式の設定ファイルを解析してFlowオブジェクトに変換。
use fleetflow_atom::parser;
let flow = parser::parse_kdl_file("flow.kdl")?;
プロジェクトローダー
プロジェクト全体(複数ファイル)を自動的に読み込み。
use fleetflow_atom::loader;
let flow = loader::load_project()?;
テンプレート処理
変数展開とテンプレート機能。
use fleetflow_atom::template::TemplateProcessor;
let mut processor = TemplateProcessor::new();
processor.add_variable("version", "1.0.0");
let result = processor.render("{{ version }}")?;
ドキュメント
ライセンス
MIT OR Apache-2.0
Dependencies
~14–21MB
~300K SLoC