From 582c602912592ec7ebea3096aefa02aea99c2143 Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Mon, 2 Jan 2023 14:34:05 +0100 Subject: Old xtask test pass --- xtask/src/command.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 100888c..889540c 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -47,6 +47,7 @@ impl<'a> CargoCommand<'a> { mode, } => { let mut args = vec![ + "+nightly", self.name(), "--example", example, @@ -69,7 +70,7 @@ impl<'a> CargoCommand<'a> { features, mode, } => { - let mut args = vec![self.name(), "--examples", "--target", target]; + let mut args = vec!["+nightly", self.name(), "--examples", "--target", target]; if let Some(feature_name) = features { args.extend_from_slice(&["--features", feature_name]); -- cgit v1.2.3 From 9a67f00a30f14df3b9635913f728afd0b40c138d Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Sun, 8 Jan 2023 19:16:36 +0100 Subject: Fix typos --- xtask/src/command.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 889540c..418f440 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -136,7 +136,7 @@ pub fn run_command(command: &CargoCommand) -> anyhow::Result { }) } -/// Check if `run` was sucessful. +/// Check if `run` was successful. /// returns Ok in case the run went as expected, /// Err otherwise pub fn run_successful(run: &RunResult, expected_output_file: String) -> Result<(), TestRunError> { -- cgit v1.2.3 From cd790a94286cdc307d399b7f7a43e305e90de5bf Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Mon, 9 Jan 2023 21:02:53 +0100 Subject: More work on new spawn/executor --- xtask/src/command.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 418f440..4e90369 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -70,7 +70,15 @@ impl<'a> CargoCommand<'a> { features, mode, } => { - let mut args = vec!["+nightly", self.name(), "--examples", "--target", target]; + let mut args = vec![ + "+nightly", + self.name(), + "--examples", + "--target", + target, + "--features", + "test-critical-section", + ]; if let Some(feature_name) = features { args.extend_from_slice(&["--features", feature_name]); -- cgit v1.2.3 From 306aa47170fd59369b7a184924e287dc3706d64d Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Mon, 23 Jan 2023 20:05:47 +0100 Subject: Add rtic-timer (timerqueue + monotonic) and rtic-monotonics (systick-monotonic) --- xtask/src/command.rs | 172 --------------------------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 xtask/src/command.rs (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs deleted file mode 100644 index 4e90369..0000000 --- a/xtask/src/command.rs +++ /dev/null @@ -1,172 +0,0 @@ -use crate::{RunResult, TestRunError}; -use core::fmt; -use os_pipe::pipe; -use std::{fs::File, io::Read, process::Command}; - -#[allow(dead_code)] -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum BuildMode { - Release, - Debug, -} - -#[derive(Debug)] -pub enum CargoCommand<'a> { - Run { - example: &'a str, - target: &'a str, - features: Option<&'a str>, - mode: BuildMode, - }, - BuildAll { - target: &'a str, - features: Option<&'a str>, - mode: BuildMode, - }, - // Size { - // example_paths: Vec<&'a Path>, - // }, - // Clean, -} - -impl<'a> CargoCommand<'a> { - fn name(&self) -> &str { - match self { - CargoCommand::Run { .. } => "run", - // CargoCommand::Size { example_paths: _ } => "rust-size", - CargoCommand::BuildAll { .. } => "build", - } - } - - pub fn args(&self) -> Vec<&str> { - match self { - CargoCommand::Run { - example, - target, - features, - mode, - } => { - let mut args = vec![ - "+nightly", - self.name(), - "--example", - example, - "--target", - target, - "--features", - "test-critical-section", - ]; - - if let Some(feature_name) = features { - args.extend_from_slice(&["--features", feature_name]); - } - if let Some(flag) = mode.to_flag() { - args.push(flag); - } - args - } - CargoCommand::BuildAll { - target, - features, - mode, - } => { - let mut args = vec![ - "+nightly", - self.name(), - "--examples", - "--target", - target, - "--features", - "test-critical-section", - ]; - - if let Some(feature_name) = features { - args.extend_from_slice(&["--features", feature_name]); - } - if let Some(flag) = mode.to_flag() { - args.push(flag); - } - args - } // CargoCommand::Size { example_paths } => { - // example_paths.iter().map(|p| p.to_str().unwrap()).collect() - // } - } - } - - pub fn command(&self) -> &str { - match self { - // we need to cheat a little here: - // `cargo size` can't be ran on multiple files, so we're using `rust-size` instead – - // which isn't a command that starts wizh `cargo`. So we're sneakily swapping them out :) - // CargoCommand::Size { .. } => "rust-size", - _ => "cargo", - } - } -} - -impl BuildMode { - pub fn to_flag(&self) -> Option<&str> { - match self { - BuildMode::Release => Some("--release"), - BuildMode::Debug => None, - } - } -} - -impl fmt::Display for BuildMode { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let cmd = match self { - BuildMode::Release => "release", - BuildMode::Debug => "debug", - }; - - write!(f, "{}", cmd) - } -} - -pub fn run_command(command: &CargoCommand) -> anyhow::Result { - let (mut reader, writer) = pipe()?; - println!("👟 {} {}", command.command(), command.args().join(" ")); - - let mut handle = Command::new(command.command()) - .args(command.args()) - .stdout(writer) - .spawn()?; - - // retrieve output and clean up - let mut output = String::new(); - reader.read_to_string(&mut output)?; - let exit_status = handle.wait()?; - - Ok(RunResult { - exit_status, - output, - }) -} - -/// Check if `run` was successful. -/// returns Ok in case the run went as expected, -/// Err otherwise -pub fn run_successful(run: &RunResult, expected_output_file: String) -> Result<(), TestRunError> { - let mut file_handle = - File::open(expected_output_file.clone()).map_err(|_| TestRunError::FileError { - file: expected_output_file.clone(), - })?; - let mut expected_output = String::new(); - file_handle - .read_to_string(&mut expected_output) - .map_err(|_| TestRunError::FileError { - file: expected_output_file.clone(), - })?; - - if expected_output != run.output { - Err(TestRunError::FileCmpError { - expected: expected_output.clone(), - got: run.output.clone(), - }) - } else if !run.exit_status.success() { - Err(TestRunError::CommandError(run.clone())) - } else { - Ok(()) - } -} -- cgit v1.2.3 From 9e445b3583c15c7701f3167eaa8dfe4afd541691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Sat, 4 Feb 2023 16:47:17 +0100 Subject: Move rtic macros to repo root, tune xtask --- xtask/src/command.rs | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 xtask/src/command.rs (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs new file mode 100644 index 0000000..6be1463 --- /dev/null +++ b/xtask/src/command.rs @@ -0,0 +1,201 @@ +use crate::Sizearguments; +use crate::{RunResult, TestRunError}; +use core::fmt; +use os_pipe::pipe; +use std::{fs::File, io::Read, process::Command}; + +#[allow(dead_code)] +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum BuildMode { + Release, + Debug, +} + +#[derive(Debug)] +pub enum CargoCommand<'a> { + Run { + example: &'a str, + target: &'a str, + features: Option<&'a str>, + mode: BuildMode, + }, + BuildAll { + target: &'a str, + features: Option<&'a str>, + mode: BuildMode, + }, + Size { + example: &'a str, + target: &'a str, + features: Option<&'a str>, + mode: BuildMode, + arguments: Option, + }, +} + +impl<'a> CargoCommand<'a> { + fn name(&self) -> &str { + match self { + CargoCommand::Run { .. } => "run", + CargoCommand::Size { .. } => "size", + CargoCommand::BuildAll { .. } => "build", + } + } + + pub fn args(&self) -> Vec<&str> { + match self { + CargoCommand::Run { + example, + target, + features, + mode, + } => { + let mut args = vec![ + "+nightly", + self.name(), + "--example", + example, + "--target", + target, + "--features", + "test-critical-section", + ]; + + if let Some(feature_name) = features { + args.extend_from_slice(&["--features", feature_name]); + } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } + args + } + CargoCommand::BuildAll { + target, + features, + mode, + } => { + let mut args = vec![ + "+nightly", + self.name(), + "--examples", + "--target", + target, + "--features", + "test-critical-section", + ]; + + if let Some(feature_name) = features { + args.extend_from_slice(&["--features", feature_name]); + } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } + args + } + CargoCommand::Size { + example, + target, + features, + mode, + arguments, + } => { + let mut args = vec![ + "+nightly", + self.name(), + "--example", + example, + "--target", + target, + "--features", + "test-critical-section", + ]; + if let Some(feature_name) = features { + args.extend_from_slice(&["--features", feature_name]); + } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } + if let Some(Sizearguments::Other(arguments)) = arguments { + // Arguments to cargo size must be passed after "--" + args.extend_from_slice(&["--"]); + for arg in arguments { + args.extend_from_slice(&[arg.as_str()]); + } + } + args + } + } + } + + pub fn command(&self) -> &str { + "cargo" + } +} + +impl BuildMode { + #[allow(clippy::wrong_self_convention)] + pub fn to_flag(&self) -> Option<&str> { + match self { + BuildMode::Release => Some("--release"), + BuildMode::Debug => None, + } + } +} + +impl fmt::Display for BuildMode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let cmd = match self { + BuildMode::Release => "release", + BuildMode::Debug => "debug", + }; + + write!(f, "{cmd}") + } +} + +pub fn run_command(command: &CargoCommand) -> anyhow::Result { + let (mut reader, writer) = pipe()?; + println!("👟 {} {}", command.command(), command.args().join(" ")); + + let mut handle = Command::new(command.command()) + .args(command.args()) + .stdout(writer) + .spawn()?; + + // retrieve output and clean up + let mut output = String::new(); + reader.read_to_string(&mut output)?; + let exit_status = handle.wait()?; + + Ok(RunResult { + exit_status, + output, + }) +} + +/// Check if `run` was successful. +/// returns Ok in case the run went as expected, +/// Err otherwise +pub fn run_successful(run: &RunResult, expected_output_file: String) -> Result<(), TestRunError> { + let mut file_handle = + File::open(expected_output_file.clone()).map_err(|_| TestRunError::FileError { + file: expected_output_file.clone(), + })?; + let mut expected_output = String::new(); + file_handle + .read_to_string(&mut expected_output) + .map_err(|_| TestRunError::FileError { + file: expected_output_file.clone(), + })?; + + if expected_output != run.output { + Err(TestRunError::FileCmpError { + expected: expected_output.clone(), + got: run.output.clone(), + }) + } else if !run.exit_status.success() { + Err(TestRunError::CommandError(run.clone())) + } else { + Ok(()) + } +} -- cgit v1.2.3 From 50e1d2d129213e286fd4321197d0c9821a034d77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Sun, 5 Feb 2023 01:50:29 +0100 Subject: Upgrade to clap v4, use log and env_logger --- xtask/src/command.rs | 131 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 90 insertions(+), 41 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 6be1463..ed73b2d 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -1,8 +1,11 @@ -use crate::Sizearguments; -use crate::{RunResult, TestRunError}; +use crate::{debug, RunResult, Sizearguments, TestRunError}; use core::fmt; use os_pipe::pipe; -use std::{fs::File, io::Read, process::Command}; +use std::{ + fs::File, + io::Read, + process::{Command, Stdio}, +}; #[allow(dead_code)] #[derive(Debug, Clone, Copy, PartialEq)] @@ -14,17 +17,32 @@ pub enum BuildMode { #[derive(Debug)] pub enum CargoCommand<'a> { Run { + cargoarg: &'a Option<&'a str>, + example: &'a str, + target: &'a str, + features: Option<&'a str>, + mode: BuildMode, + }, + Build { + cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, features: Option<&'a str>, mode: BuildMode, }, BuildAll { + cargoarg: &'a Option<&'a str>, target: &'a str, features: Option<&'a str>, mode: BuildMode, }, + CheckAll { + cargoarg: &'a Option<&'a str>, + target: &'a str, + features: Option<&'a str>, + }, Size { + cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, features: Option<&'a str>, @@ -37,32 +55,30 @@ impl<'a> CargoCommand<'a> { fn name(&self) -> &str { match self { CargoCommand::Run { .. } => "run", + CargoCommand::Build { .. } => "build", CargoCommand::Size { .. } => "size", CargoCommand::BuildAll { .. } => "build", + CargoCommand::CheckAll { .. } => "check", } } pub fn args(&self) -> Vec<&str> { match self { CargoCommand::Run { + cargoarg, example, target, features, mode, } => { - let mut args = vec![ - "+nightly", - self.name(), - "--example", - example, - "--target", - target, - "--features", - "test-critical-section", - ]; + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); - if let Some(feature_name) = features { - args.extend_from_slice(&["--features", feature_name]); + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); } if let Some(flag) = mode.to_flag() { args.push(flag); @@ -70,22 +86,56 @@ impl<'a> CargoCommand<'a> { args } CargoCommand::BuildAll { + cargoarg, target, features, mode, } => { - let mut args = vec![ - "+nightly", - self.name(), - "--examples", - "--target", - target, - "--features", - "test-critical-section", - ]; + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--examples", "--target", target]); - if let Some(feature_name) = features { - args.extend_from_slice(&["--features", feature_name]); + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } + args + } + CargoCommand::CheckAll { + cargoarg, + target, + features, + } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--examples", "--target", target]); + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + args + } + CargoCommand::Build { + cargoarg, + example, + target, + features, + mode, + } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); } if let Some(flag) = mode.to_flag() { args.push(flag); @@ -93,22 +143,19 @@ impl<'a> CargoCommand<'a> { args } CargoCommand::Size { + cargoarg, example, target, features, mode, arguments, } => { - let mut args = vec![ - "+nightly", - self.name(), - "--example", - example, - "--target", - target, - "--features", - "test-critical-section", - ]; + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + if let Some(feature_name) = features { args.extend_from_slice(&["--features", feature_name]); } @@ -155,11 +202,13 @@ impl fmt::Display for BuildMode { pub fn run_command(command: &CargoCommand) -> anyhow::Result { let (mut reader, writer) = pipe()?; - println!("👟 {} {}", command.command(), command.args().join(" ")); + debug!("👟 {} {}", command.command(), command.args().join(" ")); let mut handle = Command::new(command.command()) .args(command.args()) .stdout(writer) + // Throw away stderr, TODO + .stderr(Stdio::null()) .spawn()?; // retrieve output and clean up @@ -176,16 +225,16 @@ pub fn run_command(command: &CargoCommand) -> anyhow::Result { /// Check if `run` was successful. /// returns Ok in case the run went as expected, /// Err otherwise -pub fn run_successful(run: &RunResult, expected_output_file: String) -> Result<(), TestRunError> { +pub fn run_successful(run: &RunResult, expected_output_file: &str) -> Result<(), TestRunError> { let mut file_handle = - File::open(expected_output_file.clone()).map_err(|_| TestRunError::FileError { - file: expected_output_file.clone(), + File::open(expected_output_file).map_err(|_| TestRunError::FileError { + file: expected_output_file.to_owned(), })?; let mut expected_output = String::new(); file_handle .read_to_string(&mut expected_output) .map_err(|_| TestRunError::FileError { - file: expected_output_file.clone(), + file: expected_output_file.to_owned(), })?; if expected_output != run.output { -- cgit v1.2.3 From 806b3668e8c54b894d3d096f3d28474c32a60505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Mon, 6 Feb 2023 13:21:04 +0100 Subject: xtask: Major overhaul Fix error printouts for examples, Rename BuildAll -> Build Rename Build -> ExampleBuild Command interface changed, targets by defalt only v6 and v7 --- xtask/src/command.rs | 155 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 132 insertions(+), 23 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index ed73b2d..07ecc84 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -1,11 +1,7 @@ -use crate::{debug, RunResult, Sizearguments, TestRunError}; +use crate::{debug, info, RunResult, Sizearguments, TestRunError}; use core::fmt; use os_pipe::pipe; -use std::{ - fs::File, - io::Read, - process::{Command, Stdio}, -}; +use std::{fs::File, io::Read, process::Command}; #[allow(dead_code)] #[derive(Debug, Clone, Copy, PartialEq)] @@ -16,6 +12,8 @@ pub enum BuildMode { #[derive(Debug)] pub enum CargoCommand<'a> { + // For future embedded-ci + #[allow(dead_code)] Run { cargoarg: &'a Option<&'a str>, example: &'a str, @@ -23,25 +21,47 @@ pub enum CargoCommand<'a> { features: Option<&'a str>, mode: BuildMode, }, - Build { + Qemu { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, features: Option<&'a str>, mode: BuildMode, }, - BuildAll { + ExampleBuild { cargoarg: &'a Option<&'a str>, + example: &'a str, target: &'a str, features: Option<&'a str>, mode: BuildMode, }, - CheckAll { + ExampleCheck { cargoarg: &'a Option<&'a str>, + example: &'a str, target: &'a str, features: Option<&'a str>, + mode: BuildMode, }, - Size { + Build { + cargoarg: &'a Option<&'a str>, + package: Vec, + target: &'a str, + features: Option<&'a str>, + mode: BuildMode, + }, + Check { + cargoarg: &'a Option<&'a str>, + package: Vec, + target: &'a str, + features: Option<&'a str>, + }, + Clippy { + cargoarg: &'a Option<&'a str>, + package: Vec, + target: &'a str, + features: Option<&'a str>, + }, + ExampleSize { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, @@ -54,16 +74,21 @@ pub enum CargoCommand<'a> { impl<'a> CargoCommand<'a> { fn name(&self) -> &str { match self { - CargoCommand::Run { .. } => "run", - CargoCommand::Build { .. } => "build", - CargoCommand::Size { .. } => "size", - CargoCommand::BuildAll { .. } => "build", - CargoCommand::CheckAll { .. } => "check", + CargoCommand::Run { .. } | CargoCommand::Qemu { .. } => "run", + CargoCommand::ExampleCheck { .. } | CargoCommand::Check { .. } => "check", + CargoCommand::ExampleBuild { .. } | CargoCommand::Build { .. } => "build", + CargoCommand::ExampleSize { .. } => "size", + CargoCommand::Clippy { .. } => "clippy", + // TODO + // CargoCommand::Fmt { .. } => "fmt", + // CargoCommand::Test { .. } => "test", + // CargoCommand::Doc { .. } => "doc", } } pub fn args(&self) -> Vec<&str> { match self { + // For future embedded-ci, for now the same as Qemu CargoCommand::Run { cargoarg, example, @@ -85,8 +110,9 @@ impl<'a> CargoCommand<'a> { } args } - CargoCommand::BuildAll { + CargoCommand::Qemu { cargoarg, + example, target, features, mode, @@ -95,7 +121,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--examples", "--target", target]); + args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -105,23 +131,100 @@ impl<'a> CargoCommand<'a> { } args } - CargoCommand::CheckAll { + CargoCommand::Build { cargoarg, + package, target, features, + mode, } => { let mut args = vec!["+nightly"]; if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--examples", "--target", target]); + + args.extend_from_slice(&[self.name(), "--target", target]); + if !package.is_empty() { + for package in package { + args.extend_from_slice(&["--package", package]); + } + } if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } args } - CargoCommand::Build { + CargoCommand::Check { + cargoarg, + package, + target, + features, + } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--target", target]); + if !package.is_empty() { + for package in package { + args.extend_from_slice(&["--package", package]); + } + } + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + args + } + CargoCommand::Clippy { + cargoarg, + package, + target, + features, + } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + + args.extend_from_slice(&[self.name(), "--target", target]); + if !package.is_empty() { + for package in package { + args.extend_from_slice(&["--package", package]); + } + } + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + args + } + CargoCommand::ExampleBuild { + cargoarg, + example, + target, + features, + mode, + } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } + args + } + CargoCommand::ExampleCheck { cargoarg, example, target, @@ -142,7 +245,7 @@ impl<'a> CargoCommand<'a> { } args } - CargoCommand::Size { + CargoCommand::ExampleSize { cargoarg, example, target, @@ -202,13 +305,13 @@ impl fmt::Display for BuildMode { pub fn run_command(command: &CargoCommand) -> anyhow::Result { let (mut reader, writer) = pipe()?; + let (mut error_reader, error_writer) = pipe()?; debug!("👟 {} {}", command.command(), command.args().join(" ")); let mut handle = Command::new(command.command()) .args(command.args()) .stdout(writer) - // Throw away stderr, TODO - .stderr(Stdio::null()) + .stderr(error_writer) .spawn()?; // retrieve output and clean up @@ -216,6 +319,12 @@ pub fn run_command(command: &CargoCommand) -> anyhow::Result { reader.read_to_string(&mut output)?; let exit_status = handle.wait()?; + let mut error_output = String::new(); + error_reader.read_to_string(&mut error_output)?; + if !error_output.is_empty() { + info!("{error_output}"); + } + Ok(RunResult { exit_status, output, -- cgit v1.2.3 From 10a896ab9b0089a5ff9af4870488a6c604887cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Wed, 8 Feb 2023 22:09:32 +0100 Subject: xtask: Propagate stdio/stderr, exitcodes --- xtask/src/command.rs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 07ecc84..d894fae 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -1,4 +1,4 @@ -use crate::{debug, info, RunResult, Sizearguments, TestRunError}; +use crate::{debug, RunResult, Sizearguments, TestRunError}; use core::fmt; use os_pipe::pipe; use std::{fs::File, io::Read, process::Command}; @@ -315,19 +315,17 @@ pub fn run_command(command: &CargoCommand) -> anyhow::Result { .spawn()?; // retrieve output and clean up - let mut output = String::new(); - reader.read_to_string(&mut output)?; + let mut stdout = String::new(); + reader.read_to_string(&mut stdout)?; let exit_status = handle.wait()?; - let mut error_output = String::new(); - error_reader.read_to_string(&mut error_output)?; - if !error_output.is_empty() { - info!("{error_output}"); - } + let mut stderr = String::new(); + error_reader.read_to_string(&mut stderr)?; Ok(RunResult { exit_status, - output, + stdout, + stderr, }) } @@ -346,10 +344,10 @@ pub fn run_successful(run: &RunResult, expected_output_file: &str) -> Result<(), file: expected_output_file.to_owned(), })?; - if expected_output != run.output { + if expected_output != run.stdout { Err(TestRunError::FileCmpError { expected: expected_output.clone(), - got: run.output.clone(), + got: run.stdout.clone(), }) } else if !run.exit_status.success() { Err(TestRunError::CommandError(run.clone())) -- cgit v1.2.3 From 18c843b5509b76a661dbf141da7cb900401f5074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Fri, 24 Feb 2023 00:10:01 +0100 Subject: xtask: Add format and format-check --- xtask/src/command.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index d894fae..b1f885c 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -61,6 +61,11 @@ pub enum CargoCommand<'a> { target: &'a str, features: Option<&'a str>, }, + Format { + cargoarg: &'a Option<&'a str>, + package: Vec, + check_only: bool, + }, ExampleSize { cargoarg: &'a Option<&'a str>, example: &'a str, @@ -79,8 +84,8 @@ impl<'a> CargoCommand<'a> { CargoCommand::ExampleBuild { .. } | CargoCommand::Build { .. } => "build", CargoCommand::ExampleSize { .. } => "size", CargoCommand::Clippy { .. } => "clippy", + CargoCommand::Format { .. } => "fmt", // TODO - // CargoCommand::Fmt { .. } => "fmt", // CargoCommand::Test { .. } => "test", // CargoCommand::Doc { .. } => "doc", } @@ -203,6 +208,27 @@ impl<'a> CargoCommand<'a> { } args } + CargoCommand::Format { + cargoarg, + package, + check_only, + } => { + let mut args = vec!["+nightly", self.name()]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + + if !package.is_empty() { + for package in package { + args.extend_from_slice(&["--package", package]); + } + } + if *check_only { + args.extend_from_slice(&["--check"]); + } + + args + } CargoCommand::ExampleBuild { cargoarg, example, -- cgit v1.2.3 From a73a8d63cf9fc08bddb82d1e82cec7c40949edc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Fri, 24 Feb 2023 22:56:36 +0100 Subject: xtask: Add docs building --- xtask/src/command.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index b1f885c..6fce1c9 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -66,6 +66,10 @@ pub enum CargoCommand<'a> { package: Vec, check_only: bool, }, + Doc { + cargoarg: &'a Option<&'a str>, + features: Option<&'a str>, + }, ExampleSize { cargoarg: &'a Option<&'a str>, example: &'a str, @@ -85,9 +89,9 @@ impl<'a> CargoCommand<'a> { CargoCommand::ExampleSize { .. } => "size", CargoCommand::Clippy { .. } => "clippy", CargoCommand::Format { .. } => "fmt", + CargoCommand::Doc { .. } => "doc", // TODO // CargoCommand::Test { .. } => "test", - // CargoCommand::Doc { .. } => "doc", } } @@ -208,6 +212,19 @@ impl<'a> CargoCommand<'a> { } args } + CargoCommand::Doc { cargoarg, features } => { + let mut args = vec!["+nightly"]; + if let Some(cargoarg) = cargoarg { + args.extend_from_slice(&[cargoarg]); + } + + args.extend_from_slice(&[self.name()]); + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + args + } CargoCommand::Format { cargoarg, package, -- cgit v1.2.3 From ff49889890c14599f7581d5bea58bcd6c2ed01fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Fri, 24 Feb 2023 23:14:11 +0100 Subject: xtask: Reorder commands --- xtask/src/command.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 6fce1c9..4cf387f 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -54,6 +54,7 @@ pub enum CargoCommand<'a> { package: Vec, target: &'a str, features: Option<&'a str>, + mode: BuildMode, }, Clippy { cargoarg: &'a Option<&'a str>, @@ -172,6 +173,7 @@ impl<'a> CargoCommand<'a> { package, target, features, + mode, } => { let mut args = vec!["+nightly"]; if let Some(cargoarg) = cargoarg { @@ -187,6 +189,9 @@ impl<'a> CargoCommand<'a> { if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); } + if let Some(flag) = mode.to_flag() { + args.push(flag); + } args } CargoCommand::Clippy { -- cgit v1.2.3 From 14457da4f831c57e7a2b1c54e1c37adb8354c8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Sat, 25 Feb 2023 00:28:45 +0100 Subject: xtask: Add book building --- xtask/src/command.rs | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 4cf387f..e43c936 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -71,6 +71,9 @@ pub enum CargoCommand<'a> { cargoarg: &'a Option<&'a str>, features: Option<&'a str>, }, + Book { + mdbookarg: &'a Option<&'a str>, + }, ExampleSize { cargoarg: &'a Option<&'a str>, example: &'a str, @@ -91,6 +94,24 @@ impl<'a> CargoCommand<'a> { CargoCommand::Clippy { .. } => "clippy", CargoCommand::Format { .. } => "fmt", CargoCommand::Doc { .. } => "doc", + CargoCommand::Book { .. } => "build", + // TODO + // CargoCommand::Test { .. } => "test", + } + } + pub fn command(&self) -> &str { + match self { + CargoCommand::Run { .. } + | CargoCommand::Qemu { .. } + | CargoCommand::ExampleCheck { .. } + | CargoCommand::Check { .. } + | CargoCommand::ExampleBuild { .. } + | CargoCommand::Build { .. } + | CargoCommand::ExampleSize { .. } + | CargoCommand::Clippy { .. } + | CargoCommand::Format { .. } + | CargoCommand::Doc { .. } => "cargo", + CargoCommand::Book { .. } => "mdbook", // TODO // CargoCommand::Test { .. } => "test", } @@ -230,6 +251,18 @@ impl<'a> CargoCommand<'a> { } args } + CargoCommand::Book { mdbookarg } => { + let mut args = vec![]; + + args.extend_from_slice(&[self.name()]); + + if let Some(arg) = mdbookarg { + args.extend_from_slice(&[arg]); + } + + args.extend_from_slice(&["book/en"]); + args + } CargoCommand::Format { cargoarg, package, @@ -324,10 +357,6 @@ impl<'a> CargoCommand<'a> { } } } - - pub fn command(&self) -> &str { - "cargo" - } } impl BuildMode { -- cgit v1.2.3 From a575266ec2da56fb202de35948650c7f11a2909d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Tue, 28 Feb 2023 23:55:02 +0100 Subject: xtask: Add tests, clean a bit --- xtask/src/command.rs | 86 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 34 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index e43c936..9f87522 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -1,4 +1,4 @@ -use crate::{debug, RunResult, Sizearguments, TestRunError}; +use crate::{debug, Package, RunResult, Sizearguments, TestRunError}; use core::fmt; use os_pipe::pipe; use std::{fs::File, io::Read, process::Command}; @@ -18,58 +18,63 @@ pub enum CargoCommand<'a> { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, Qemu { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, ExampleBuild { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, ExampleCheck { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, Build { cargoarg: &'a Option<&'a str>, - package: Vec, + package: Option, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, Check { cargoarg: &'a Option<&'a str>, - package: Vec, + package: Option, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, }, Clippy { cargoarg: &'a Option<&'a str>, - package: Vec, + package: Option, target: &'a str, - features: Option<&'a str>, + features: Option, }, Format { cargoarg: &'a Option<&'a str>, - package: Vec, + package: Option, check_only: bool, }, Doc { cargoarg: &'a Option<&'a str>, - features: Option<&'a str>, + features: Option, + }, + Test { + package: Option, + features: Option, + test: Option, }, Book { mdbookarg: &'a Option<&'a str>, @@ -78,7 +83,7 @@ pub enum CargoCommand<'a> { cargoarg: &'a Option<&'a str>, example: &'a str, target: &'a str, - features: Option<&'a str>, + features: Option, mode: BuildMode, arguments: Option, }, @@ -95,8 +100,7 @@ impl<'a> CargoCommand<'a> { CargoCommand::Format { .. } => "fmt", CargoCommand::Doc { .. } => "doc", CargoCommand::Book { .. } => "build", - // TODO - // CargoCommand::Test { .. } => "test", + CargoCommand::Test { .. } => "test", } } pub fn command(&self) -> &str { @@ -110,10 +114,9 @@ impl<'a> CargoCommand<'a> { | CargoCommand::ExampleSize { .. } | CargoCommand::Clippy { .. } | CargoCommand::Format { .. } + | CargoCommand::Test { .. } | CargoCommand::Doc { .. } => "cargo", CargoCommand::Book { .. } => "mdbook", - // TODO - // CargoCommand::Test { .. } => "test", } } @@ -175,10 +178,9 @@ impl<'a> CargoCommand<'a> { } args.extend_from_slice(&[self.name(), "--target", target]); - if !package.is_empty() { - for package in package { - args.extend_from_slice(&["--package", package]); - } + + if let Some(package) = package { + args.extend_from_slice(&["--package", package.to_string()]); } if let Some(feature) = features { @@ -201,10 +203,9 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } args.extend_from_slice(&[self.name(), "--target", target]); - if !package.is_empty() { - for package in package { - args.extend_from_slice(&["--package", package]); - } + + if let Some(package) = package { + args.extend_from_slice(&["--package", package.to_string()]); } if let Some(feature) = features { @@ -227,10 +228,9 @@ impl<'a> CargoCommand<'a> { } args.extend_from_slice(&[self.name(), "--target", target]); - if !package.is_empty() { - for package in package { - args.extend_from_slice(&["--package", package]); - } + + if let Some(package) = package { + args.extend_from_slice(&["--package", package.to_string()]); } if let Some(feature) = features { @@ -251,6 +251,26 @@ impl<'a> CargoCommand<'a> { } args } + CargoCommand::Test { + package, + features, + test, + } => { + let mut args = vec!["+nightly"]; + args.extend_from_slice(&[self.name()]); + + if let Some(package) = package { + args.extend_from_slice(&["--package", package.to_string()]); + } + + if let Some(feature) = features { + args.extend_from_slice(&["--features", feature]); + } + if let Some(test) = test { + args.extend_from_slice(&["--test", test]); + } + args + } CargoCommand::Book { mdbookarg } => { let mut args = vec![]; @@ -273,10 +293,8 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } - if !package.is_empty() { - for package in package { - args.extend_from_slice(&["--package", package]); - } + if let Some(package) = package { + args.extend_from_slice(&["--package", package.to_string()]); } if *check_only { args.extend_from_slice(&["--check"]); -- cgit v1.2.3 From 512bab17cc52a288dd2e41e39f7b3b0af95e03ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Wed, 1 Mar 2023 00:10:07 +0100 Subject: xtask: Split out arg parsing --- xtask/src/command.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 9f87522..9d22cf6 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -180,7 +180,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[self.name(), "--target", target]); if let Some(package) = package { - args.extend_from_slice(&["--package", package.to_string()]); + args.extend_from_slice(&["--package", package.name()]); } if let Some(feature) = features { @@ -205,7 +205,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[self.name(), "--target", target]); if let Some(package) = package { - args.extend_from_slice(&["--package", package.to_string()]); + args.extend_from_slice(&["--package", package.name()]); } if let Some(feature) = features { @@ -230,7 +230,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[self.name(), "--target", target]); if let Some(package) = package { - args.extend_from_slice(&["--package", package.to_string()]); + args.extend_from_slice(&["--package", package.name()]); } if let Some(feature) = features { @@ -260,7 +260,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[self.name()]); if let Some(package) = package { - args.extend_from_slice(&["--package", package.to_string()]); + args.extend_from_slice(&["--package", package.name()]); } if let Some(feature) = features { @@ -294,7 +294,7 @@ impl<'a> CargoCommand<'a> { } if let Some(package) = package { - args.extend_from_slice(&["--package", package.to_string()]); + args.extend_from_slice(&["--package", package.name()]); } if *check_only { args.extend_from_slice(&["--check"]); -- cgit v1.2.3 From c4ee8e8f027a246663514bb5d2d41b21cfd05ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Wed, 1 Mar 2023 00:59:06 +0100 Subject: xtask: check and clippy, test without target --- xtask/src/command.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 9d22cf6..b6602ee 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -194,7 +194,7 @@ impl<'a> CargoCommand<'a> { CargoCommand::Check { cargoarg, package, - target, + target: _, features, mode, } => { @@ -202,7 +202,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--target", target]); + args.extend_from_slice(&[self.name()]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); @@ -219,7 +219,7 @@ impl<'a> CargoCommand<'a> { CargoCommand::Clippy { cargoarg, package, - target, + target: _, features, } => { let mut args = vec!["+nightly"]; @@ -227,7 +227,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--target", target]); + args.extend_from_slice(&[self.name()]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); -- cgit v1.2.3 From 3908cbf7e8f3a0e7da7dbe132afd387f227a8a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Thu, 2 Mar 2023 22:02:19 +0100 Subject: xtask: Allow passing arguments to book and doc --- xtask/src/command.rs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index b6602ee..6dd661e 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -1,4 +1,4 @@ -use crate::{debug, Package, RunResult, Sizearguments, TestRunError}; +use crate::{debug, ExtraArguments, Package, RunResult, TestRunError}; use core::fmt; use os_pipe::pipe; use std::{fs::File, io::Read, process::Command}; @@ -70,6 +70,7 @@ pub enum CargoCommand<'a> { Doc { cargoarg: &'a Option<&'a str>, features: Option, + arguments: Option, }, Test { package: Option, @@ -77,7 +78,7 @@ pub enum CargoCommand<'a> { test: Option, }, Book { - mdbookarg: &'a Option<&'a str>, + arguments: Option, }, ExampleSize { cargoarg: &'a Option<&'a str>, @@ -85,7 +86,7 @@ pub enum CargoCommand<'a> { target: &'a str, features: Option, mode: BuildMode, - arguments: Option, + arguments: Option, }, } @@ -238,7 +239,11 @@ impl<'a> CargoCommand<'a> { } args } - CargoCommand::Doc { cargoarg, features } => { + CargoCommand::Doc { + cargoarg, + features, + arguments, + } => { let mut args = vec!["+nightly"]; if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); @@ -249,6 +254,11 @@ impl<'a> CargoCommand<'a> { if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); } + if let Some(ExtraArguments::Other(arguments)) = arguments { + for arg in arguments { + args.extend_from_slice(&[arg.as_str()]); + } + } args } CargoCommand::Test { @@ -271,15 +281,17 @@ impl<'a> CargoCommand<'a> { } args } - CargoCommand::Book { mdbookarg } => { + CargoCommand::Book { arguments } => { let mut args = vec![]; - args.extend_from_slice(&[self.name()]); - - if let Some(arg) = mdbookarg { - args.extend_from_slice(&[arg]); + if let Some(ExtraArguments::Other(arguments)) = arguments { + for arg in arguments { + args.extend_from_slice(&[arg.as_str()]); + } + } else { + // If no argument given, run mdbook build + args.extend_from_slice(&[self.name()]); } - args.extend_from_slice(&["book/en"]); args } @@ -364,7 +376,7 @@ impl<'a> CargoCommand<'a> { if let Some(flag) = mode.to_flag() { args.push(flag); } - if let Some(Sizearguments::Other(arguments)) = arguments { + if let Some(ExtraArguments::Other(arguments)) = arguments { // Arguments to cargo size must be passed after "--" args.extend_from_slice(&["--"]); for arg in arguments { -- cgit v1.2.3 From 81ca9060438a43f02d1d6865834a3d4401d610d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Thu, 2 Mar 2023 22:02:54 +0100 Subject: xtask: Rename: name->command, command->executable --- xtask/src/command.rs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 6dd661e..42a5cac 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -91,7 +91,7 @@ pub enum CargoCommand<'a> { } impl<'a> CargoCommand<'a> { - fn name(&self) -> &str { + fn command(&self) -> &str { match self { CargoCommand::Run { .. } | CargoCommand::Qemu { .. } => "run", CargoCommand::ExampleCheck { .. } | CargoCommand::Check { .. } => "check", @@ -104,7 +104,7 @@ impl<'a> CargoCommand<'a> { CargoCommand::Test { .. } => "test", } } - pub fn command(&self) -> &str { + pub fn executable(&self) -> &str { match self { CargoCommand::Run { .. } | CargoCommand::Qemu { .. } @@ -135,7 +135,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + args.extend_from_slice(&[self.command(), "--example", example, "--target", target]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -156,7 +156,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + args.extend_from_slice(&[self.command(), "--example", example, "--target", target]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -178,7 +178,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--target", target]); + args.extend_from_slice(&[self.command(), "--target", target]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); @@ -203,7 +203,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name()]); + args.extend_from_slice(&[self.command()]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); @@ -228,7 +228,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name()]); + args.extend_from_slice(&[self.command()]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); @@ -249,7 +249,7 @@ impl<'a> CargoCommand<'a> { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name()]); + args.extend_from_slice(&[self.command()]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -267,7 +267,7 @@ impl<'a> CargoCommand<'a> { test, } => { let mut args = vec!["+nightly"]; - args.extend_from_slice(&[self.name()]); + args.extend_from_slice(&[self.command()]); if let Some(package) = package { args.extend_from_slice(&["--package", package.name()]); @@ -290,7 +290,7 @@ impl<'a> CargoCommand<'a> { } } else { // If no argument given, run mdbook build - args.extend_from_slice(&[self.name()]); + args.extend_from_slice(&[self.command()]); } args.extend_from_slice(&["book/en"]); args @@ -300,7 +300,7 @@ impl<'a> CargoCommand<'a> { package, check_only, } => { - let mut args = vec!["+nightly", self.name()]; + let mut args = vec!["+nightly", self.command()]; if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } @@ -325,7 +325,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + args.extend_from_slice(&[self.command(), "--example", example, "--target", target]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -346,7 +346,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + args.extend_from_slice(&[self.command(), "--example", example, "--target", target]); if let Some(feature) = features { args.extend_from_slice(&["--features", feature]); @@ -368,7 +368,7 @@ impl<'a> CargoCommand<'a> { if let Some(cargoarg) = cargoarg { args.extend_from_slice(&[cargoarg]); } - args.extend_from_slice(&[self.name(), "--example", example, "--target", target]); + args.extend_from_slice(&[self.command(), "--example", example, "--target", target]); if let Some(feature_name) = features { args.extend_from_slice(&["--features", feature_name]); @@ -413,9 +413,9 @@ impl fmt::Display for BuildMode { pub fn run_command(command: &CargoCommand) -> anyhow::Result { let (mut reader, writer) = pipe()?; let (mut error_reader, error_writer) = pipe()?; - debug!("👟 {} {}", command.command(), command.args().join(" ")); + debug!("👟 {} {}", command.executable(), command.args().join(" ")); - let mut handle = Command::new(command.command()) + let mut handle = Command::new(command.executable()) .args(command.args()) .stdout(writer) .stderr(error_writer) -- cgit v1.2.3 From 0723310ff7584caf6b86b3500f94925d921cf02c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Sat, 4 Mar 2023 00:08:11 +0100 Subject: xtask: Book: Allow fully custom arguments --- xtask/src/command.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'xtask/src/command.rs') diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 42a5cac..6e91a52 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -290,9 +290,10 @@ impl<'a> CargoCommand<'a> { } } else { // If no argument given, run mdbook build + // with default path to book args.extend_from_slice(&[self.command()]); + args.extend_from_slice(&["book/en"]); } - args.extend_from_slice(&["book/en"]); args } CargoCommand::Format { -- cgit v1.2.3