Skip to content

Commit

Permalink
fix(cargo-jrest): filter args when run as cargo command
Browse files Browse the repository at this point in the history
  • Loading branch information
ivangabriele committed Jul 5, 2023
1 parent 0f1f97e commit 78c25dd
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions cargo-jrest/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use std::env;
use std::process::Stdio;

use clap::Parser;
Expand All @@ -13,21 +14,23 @@ struct Cli {

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
clear_terminal();
let args: Vec<String> = env::args().collect();
let filtered_args = if is_run_as_cargo_command() {
args.iter().skip(1).cloned().collect::<Vec<String>>()
} else {
args.iter().cloned().collect::<Vec<String>>()
};

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",
Expand Down Expand Up @@ -76,3 +79,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
fn clear_terminal() {
print!("{esc}[2J{esc}[1;1H", esc = 27 as char);
}

fn is_run_as_cargo_command() -> bool {
let args: Vec<String> = std::env::args().collect();

args.len() >= 2 && args[1] == "jrest"
}

0 comments on commit 78c25dd

Please sign in to comment.