cargo-worktree 1.0.0

Deterministic build namespace layer for Cargo
use crate::core::namespace::NamespaceComponents;
use anyhow::Result;
use serde::Serialize;
use std::path::Path;

#[derive(Serialize)]
struct InspectOutput<'a> {
    namespace: Option<String>,
    target_dir: Option<String>,
    components: &'a NamespaceComponents,
}

pub fn run(components: &NamespaceComponents, target_dir: Option<&Path>) -> Result<()> {
    let out = InspectOutput {
        namespace: components.namespace_key(),
        target_dir: target_dir.map(|p| p.to_string_lossy().to_string()),
        components,
    };

    println!("{}", serde_json::to_string_pretty(&out)?);
    Ok(())
}