// nixos-config - My current NixOS configuration // // Copyright (C) 2025 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of my nixos-config. // // You should have received a copy of the License along with this program. // If not, see . 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 command = args.command.first().map_or("flake", String::as_str); { let args = if args.command.len() > 1 { &args.command[1..] } else { &[] }; // println!("Running: `fupdate-{command} {}`", args.join(" ")); let mut child = Command::new(format!("fupdate-{command}")) .args(args) .spawn() .with_context(|| format!("Failed to spawn `fupdate-{command}`"))?; if !child .wait() .with_context(|| format!("Failed to wait for `fupdate-{command}` to finish"))? .success() { bail!("Command `fupdate-{command} {}` failed!", args.join(" ")); } } Ok(()) } #[test] fn verify_cli() { CliArgs::command().debug_assert(); }