nordisk/holger-egui
holger-egui-build-thing/src/main.rs
//! `holger-egui-build-thing [--list | toml | emit]` — say what the declaration IS,
//! or write it.
//!
//! Repository tooling, never shipped. It owns no build knowledge: it reads
//! [`HolgerEguiBuildThing::variants`]. Building goes through the declared door,
//! never through this binary.
use std::process::ExitCode;
use holger_egui_build_thing::{
emitted_toml, repo_root, write_emitted, BuildThingTrait, HolgerEguiBuildThing,
};
fn main() -> ExitCode {
match std::env::args().nth(1).as_deref() {
Some("--list") => {
for v in &HolgerEguiBuildThing.variants().variants {
println!("{:<14} {}", v.name, v.command_line());
}
ExitCode::SUCCESS
}
Some("toml") => match emitted_toml() {
Ok(t) => {
print!("{t}");
ExitCode::SUCCESS
}
Err(e) => {
eprintln!("holger-egui-build-thing: {e:#}");
ExitCode::FAILURE
}
},
Some("emit") => match write_emitted(&repo_root()) {
Ok(p) => {
println!("wrote {}", p.display());
ExitCode::SUCCESS
}
Err(e) => {
eprintln!("holger-egui-build-thing: {e:#}");
ExitCode::FAILURE
}
},
_ => {
eprintln!("usage: holger-egui-build-thing --list | toml | emit");
ExitCode::from(2)
}
}
}