aboutsummaryrefslogtreecommitdiff
path: root/xtask/src/command.rs
diff options
context:
space:
mode:
authorHenrik Tjäder <henrik@tjaders.com>2023-03-02 22:02:19 +0100
committerHenrik Tjäder <henrik@tjaders.com>2023-03-02 22:02:19 +0100
commit3908cbf7e8f3a0e7da7dbe132afd387f227a8a3a (patch)
tree9a37c2b89341611790153f28b09445a754e2bd05 /xtask/src/command.rs
parent0a995e46c70dc193955d358d55cb111c2bba9505 (diff)
xtask: Allow passing arguments to book and doc
Diffstat (limited to 'xtask/src/command.rs')
-rw-r--r--xtask/src/command.rs34
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 {