From 05dd7187acfd294a08cd8392c2d20211fbb11fa7 Mon Sep 17 00:00:00 2001 From: Valerie Wolfe Date: Tue, 11 Jun 2024 10:56:56 -0400 Subject: [PATCH] mkwin: implement argument forwarding and improved output formatting --- mkwin/src/main.rs | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/mkwin/src/main.rs b/mkwin/src/main.rs index e9d5b72..c98a8c8 100644 --- a/mkwin/src/main.rs +++ b/mkwin/src/main.rs @@ -10,10 +10,23 @@ pub fn main() { // build reference string let mut arg_string = String::new(); - for arg in args.clone().finish() { + let mut arg_vec = args.clone().finish(); + for arg in &arg_vec { arg_string += &format!(" {}", arg.to_str().unwrap()); } + // drain forwarded arguments + let forwarded: String; + if let Some(position) = arg_vec.iter().position(|a| a == "--") { + let mut build = String::new(); + for arg in arg_vec.drain(position+1..) { + build = format!("{build} {}", arg.to_str().unwrap()); + } + arg_vec.pop(); + args = Arguments::from_vec(arg_vec); + forwarded = build; + } else { forwarded = String::new(); } + // consume breaking flags if args.contains(flag::HELP) { help_text(); @@ -55,16 +68,24 @@ pub fn main() { error::missing_target(); return; } - // construct output - print!("#!/usr/bin/bash\n# generated with: mkwin{arg_string}\n\n'{target}' "); - if path_convert { - let flags = if let Some(i) = path_convert_flags { format!("-{i}") } else { String::new() }; - print!("`path-convert {flags} $@`"); - } else { - print!("$@"); + // construct output + print!("#!/usr/bin/bash\n# generated with: mkwin{arg_string}\n\n'{target}'"); + + // handle forwarded arguments + if !forwarded.is_empty() { + print!("{forwarded}"); } + // handle path convert flag + if path_convert { + let flags = if let Some(i) = path_convert_flags { format!(" -{i}") } else { String::new() }; + print!(" `path-convert{flags} $@`"); + } else { + print!(" $@"); + } + + // handle quiet flag if quiet { print!(" > /dev/null 2>&1 &"); }