crates/monetize-build-thing/src/main.rs
//! `monetize-build-thing` — the emission doors. No build knowledge here.
//!
//! ```text
//! monetize-build-thing emit [root] REWRITE .nornir/build-variants.toml from the code
//! monetize-build-thing toml the emission, on stdout
//! monetize-build-thing --list every declared variant and its cargo line
//! ```
use std::path::PathBuf;
use std::process::ExitCode;
fn main() -> ExitCode {
let args: Vec<String> = std::env::args().skip(1).collect();
let r = match args.first().map(String::as_str) {
Some("emit") => {
let root = args
.get(1)
.map(PathBuf::from)
.unwrap_or_else(monetize_build_thing::repo_root);
monetize_build_thing::write_emitted(&root).map(|p| println!("emitted {}", p.display()))
}
Some("toml") => monetize_build_thing::emitted_toml().map(|t| print!("{t}")),
Some("--list") => {
for v in monetize_build_thing::declared().variants {
println!("{:<16} {}", v.name, v.command_line());
}
Ok(())
}
_ => {
eprintln!("usage: monetize-build-thing emit [root] | toml | --list");
return ExitCode::FAILURE;
}
};
match r {
Ok(()) => ExitCode::SUCCESS,
Err(e) => {
eprintln!("monetize-build-thing: {e:#}");
ExitCode::FAILURE
}
}
}