From 78c25dd1a8bfe0fffef96c1daf786a87ce45355e Mon Sep 17 00:00:00 2001 From: Ivan Gabriele Date: Wed, 5 Jul 2023 13:01:29 +0200 Subject: [PATCH] fix(cargo-jrest): filter args when run as cargo command --- cargo-jrest/src/main.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/cargo-jrest/src/main.rs b/cargo-jrest/src/main.rs index 7615fbe..6e7138e 100644 --- a/cargo-jrest/src/main.rs +++ b/cargo-jrest/src/main.rs @@ -1,3 +1,4 @@ +use std::env; use std::process::Stdio; use clap::Parser; @@ -13,21 +14,23 @@ struct Cli { #[tokio::main] async fn main() -> Result<(), Box> { - clear_terminal(); + let args: Vec = env::args().collect(); + let filtered_args = if is_run_as_cargo_command() { + args.iter().skip(1).cloned().collect::>() + } else { + args.iter().cloned().collect::>() + }; - let cli = Cli::parse(); + let cli = Cli::parse_from(filtered_args); let controlled_testname = cli.testname.as_deref().unwrap_or(".").to_owned(); let statement = format!("cargo test {}", controlled_testname); + clear_terminal(); + println!("\n[Jrest] Running `{}`...\n", statement); let mut tokio_command = Command::new("cargo"); - // Command::new("cargo").args(["test", "--message-format=json", controlled_testname]); - // .spawn() - // .expect(format!("Failed to run `cargo test {}`.", controlled_testname).as_str()) - // .wait() - // .expect("Failed to wait for `cargo test` to finish."); tokio_command.args([ "test", @@ -76,3 +79,9 @@ async fn main() -> Result<(), Box> { fn clear_terminal() { print!("{esc}[2J{esc}[1;1H", esc = 27 as char); } + +fn is_run_as_cargo_command() -> bool { + let args: Vec = std::env::args().collect(); + + args.len() >= 2 && args[1] == "jrest" +}