diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-04-14 13:32:15 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-04-14 13:32:15 +0200 |
commit | 5e1362e4f73328ecbace995c2892f01b9a62e0b9 (patch) | |
tree | 8e7362893d22ac95e431ec66d2ed9fa6094a5d34 /pkgs/by-name/fu/fupdate/src/main.rs | |
parent | pkgs/fupdate: Split into `fupdate-flake` and `fupdate` (diff) | |
download | nixos-config-5e1362e4f73328ecbace995c2892f01b9a62e0b9.zip |
pkgs/fupdate: Rewrite in rust
Diffstat (limited to 'pkgs/by-name/fu/fupdate/src/main.rs')
-rw-r--r-- | pkgs/by-name/fu/fupdate/src/main.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/pkgs/by-name/fu/fupdate/src/main.rs b/pkgs/by-name/fu/fupdate/src/main.rs new file mode 100644 index 00000000..850eaf87 --- /dev/null +++ b/pkgs/by-name/fu/fupdate/src/main.rs @@ -0,0 +1,40 @@ +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(); +} |