diff options
| author | Henrik Tjäder <henrik@tjaders.com> | 2023-03-02 22:02:19 +0100 |
|---|---|---|
| committer | Henrik Tjäder <henrik@tjaders.com> | 2023-03-02 22:02:19 +0100 |
| commit | 3908cbf7e8f3a0e7da7dbe132afd387f227a8a3a (patch) | |
| tree | 9a37c2b89341611790153f28b09445a754e2bd05 /xtask/src/command.rs | |
| parent | 0a995e46c70dc193955d358d55cb111c2bba9505 (diff) | |
xtask: Allow passing arguments to book and doc
Diffstat (limited to 'xtask/src/command.rs')
| -rw-r--r-- | xtask/src/command.rs | 34 |
1 files changed, 23 insertions, 11 deletions
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<String>, + arguments: Option<ExtraArguments>, }, Test { package: Option<Package>, @@ -77,7 +78,7 @@ pub enum CargoCommand<'a> { test: Option<String>, }, Book { - mdbookarg: &'a Option<&'a str>, + arguments: Option<ExtraArguments>, }, ExampleSize { cargoarg: &'a Option<&'a str>, @@ -85,7 +86,7 @@ pub enum CargoCommand<'a> { target: &'a str, features: Option<String>, mode: BuildMode, - arguments: Option<Sizearguments>, + arguments: Option<ExtraArguments>, }, } @@ -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 { |
