nornir 0.1.0

Companion to cargo: dependency tracking, release gating, deploy, benchmarks, and documentation assembly. Project-agnostic.
Documentation
//! Launcher for the Urðr Threads visualizer.
//!
//! Usage:
//!     cargo run --release --features viz --bin urdr-threads \
//!         -- --warehouse /tmp/nornir-demo-warehouse --workspace norninr-demo

use std::path::PathBuf;

use anyhow::Result;
use clap::Parser;

use nornir::viz::UrdrThreadsApp;

#[derive(Parser)]
#[command(name = "urdr-threads")]
#[command(about = "Time-travel visualizer for the Urðr warehouse", long_about = None)]
struct Cli {
    /// Path to the Iceberg warehouse root directory.
    #[arg(long, default_value = "/tmp/nornir-demo-warehouse")]
    warehouse: PathBuf,

    /// Workspace name (matches the `[workspace] name =` from the
    /// descriptor used at release time).
    #[arg(long, default_value = "norninr-demo")]
    workspace: String,
}

fn main() -> Result<()> {
    let cli = Cli::parse();
    let native_options = eframe::NativeOptions {
        viewport: eframe::egui::ViewportBuilder::default()
            .with_inner_size([1200.0, 700.0])
            .with_title("Urðr Threads — nornir time machine"),
        ..Default::default()
    };
    eframe::run_native(
        "Urðr Threads",
        native_options,
        Box::new(move |_cc| Ok(Box::new(UrdrThreadsApp::new(cli.warehouse, cli.workspace)))),
    )
    .map_err(|e| anyhow::anyhow!("eframe error: {e}"))?;
    Ok(())
}