use std::process::Command; use anyhow::{bail, Context, Result}; use clap::{CommandFactory, Parser}; pub mod cli; use crate::cli::CliArgs; fn main() -> Result<(), anyhow::Error> { clap_complete::CompleteEnv::with_factory(CliArgs::command).complete(); let args = CliArgs::parse(); let other = args.command.first().map_or("flake", String::as_str); { let args = if args.command.len() > 1 { &args.command[1..] } else { &[] }; let status = Command::new(format!("fupdate-{other}")) .args(args) .status() .with_context(|| format!("Failed to execute `fupdate-{other}`"))?; if !status.success() { bail!("Command `fupdate-{other}` failed!"); } } Ok(()) } #[test] fn verify_cli() { CliArgs::command().debug_assert(); }