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