| Crates.io | fleetflow-atom |
| lib.rs | fleetflow-atom |
| version | 0.1.1 |
| created_at | 2025-11-09 10:56:07.025623+00 |
| updated_at | 2025-11-09 11:04:55.220094+00 |
| description | Core functionality for FleetFlow |
| homepage | https://github.com/chronista-club/fleetflow |
| repository | https://github.com/chronista-club/fleetflow |
| max_upload_size | |
| id | 1923991 |
| size | 90,828 |
FleetFlowのコア機能を提供するライブラリクレート。
fleetflow-atomは、FleetFlowの中核となる機能を提供します:
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);
}
プロセスの設計図。データベースに格納可能。
pub struct Flow {
pub name: String,
pub services: HashMap<String, Service>,
pub stages: HashMap<String, Stage>,
}
コンテナサービスの定義。
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>,
}
環境(local、dev、stg、prdなど)の定義。
pub struct Stage {
pub services: Vec<String>,
pub variables: HashMap<String, String>,
}
実行中のプロセス情報。データベースに格納可能。
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形式の設定ファイルを解析して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