greentic-operator 0.4.43

Greentic operator CLI for local dev and demo orchestration.
Documentation
use std::path::Path;

use super::{ensure_dir, write_if_missing};

const DEFAULT_GMAP: &str = "_ = forbidden\n";
const GREENTIC_YAML: &str = "\
# greentic operator project
# Optional binary overrides
binaries: {}
";

pub fn ensure_layout(root: &Path) -> anyhow::Result<()> {
    ensure_dir(&root.join("providers"))?;
    ensure_dir(&root.join("providers").join("messaging"))?;
    ensure_dir(&root.join("packs"))?;
    ensure_dir(&root.join("tenants"))?;
    ensure_dir(&root.join("tenants").join("default"))?;
    ensure_dir(&root.join("tenants").join("default").join("teams"))?;
    ensure_dir(&root.join("state").join("resolved"))?;
    ensure_dir(&root.join("state").join("gtbind"))?;
    ensure_dir(&root.join("state").join("pids"))?;
    ensure_dir(&root.join("state").join("logs"))?;
    ensure_dir(&root.join("state").join("runs"))?;
    ensure_dir(&root.join("state").join("doctor"))?;

    write_if_missing(&root.join("greentic.yaml"), GREENTIC_YAML)?;
    write_if_missing(
        &root.join("tenants").join("default").join("tenant.gmap"),
        DEFAULT_GMAP,
    )?;

    Ok(())
}