Skip to content

Commit 4d9095b

Browse files
committed
Change PreProcessor::supports_renderer to return a Result
This changes `PreProcessor::supports_renderer` to return a `Result` in preparation to allow preprocessors to be optional when the command fails.
1 parent 235c1f8 commit 4d9095b

File tree

6 files changed

+14
-24
lines changed

6 files changed

+14
-24
lines changed

crates/mdbook-driver/src/builtin_preprocessors/cmd.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,24 +114,14 @@ impl Preprocessor for CmdPreprocessor {
114114
})
115115
}
116116

117-
fn supports_renderer(&self, renderer: &str) -> bool {
117+
fn supports_renderer(&self, renderer: &str) -> Result<bool> {
118118
debug!(
119119
"Checking if the \"{}\" preprocessor supports \"{}\"",
120120
self.name(),
121121
renderer
122122
);
123123

124-
let mut cmd = match crate::compose_command(&self.cmd, &self.root) {
125-
Ok(c) => c,
126-
Err(e) => {
127-
warn!(
128-
"Unable to create the command for the \"{}\" preprocessor, {}",
129-
self.name(),
130-
e
131-
);
132-
return false;
133-
}
134-
};
124+
let mut cmd = crate::compose_command(&self.cmd, &self.root)?;
135125

136126
let outcome = cmd
137127
.arg("supports")
@@ -153,7 +143,7 @@ impl Preprocessor for CmdPreprocessor {
153143
}
154144
}
155145

156-
outcome.unwrap_or(false)
146+
Ok(outcome.unwrap_or(false))
157147
}
158148
}
159149

crates/mdbook-driver/src/mdbook.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ fn preprocessor_should_run(
542542
) -> Result<bool> {
543543
// default preprocessors should be run by default (if supported)
544544
if cfg.build.use_default_preprocessors && is_default_preprocessor(preprocessor) {
545-
return Ok(preprocessor.supports_renderer(renderer.name()));
545+
return preprocessor.supports_renderer(renderer.name());
546546
}
547547

548548
let key = format!("preprocessor.{}.renderers", preprocessor.name());
@@ -552,7 +552,7 @@ fn preprocessor_should_run(
552552
Ok(Some(explicit_renderers)) => {
553553
Ok(explicit_renderers.iter().any(|name| name == renderer_name))
554554
}
555-
Ok(None) => Ok(preprocessor.supports_renderer(renderer_name)),
555+
Ok(None) => preprocessor.supports_renderer(renderer_name),
556556
Err(e) => bail!("failed to get `{key}`: {e}"),
557557
}
558558
}

crates/mdbook-driver/src/mdbook/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,8 @@ impl Preprocessor for BoolPreprocessor {
247247
unimplemented!()
248248
}
249249

250-
fn supports_renderer(&self, _renderer: &str) -> bool {
251-
self.0
250+
fn supports_renderer(&self, _renderer: &str) -> Result<bool> {
251+
Ok(self.0)
252252
}
253253
}
254254

crates/mdbook-preprocessor/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ pub trait Preprocessor {
3939
/// particular renderer.
4040
///
4141
/// By default, always returns `true`.
42-
fn supports_renderer(&self, _renderer: &str) -> bool {
43-
true
42+
fn supports_renderer(&self, _renderer: &str) -> Result<bool> {
43+
Ok(true)
4444
}
4545
}
4646

examples/nop-preprocessor.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ fn handle_supports(pre: &dyn Preprocessor, sub_args: &ArgMatches) -> ! {
5959
let renderer = sub_args
6060
.get_one::<String>("renderer")
6161
.expect("Required argument");
62-
let supported = pre.supports_renderer(renderer);
62+
let supported = pre.supports_renderer(renderer).unwrap();
6363

6464
// Signal whether the renderer is supported by exiting with 1 or 0.
6565
if supported {
@@ -105,8 +105,8 @@ mod nop_lib {
105105
Ok(book)
106106
}
107107

108-
fn supports_renderer(&self, renderer: &str) -> bool {
109-
renderer != "not-supported"
108+
fn supports_renderer(&self, renderer: &str) -> Result<bool> {
109+
Ok(renderer != "not-supported")
110110
}
111111
}
112112

tests/testsuite/preprocessor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ fn example() -> CmdPreprocessor {
8383
fn example_supports_whatever() {
8484
let cmd = example();
8585

86-
let got = cmd.supports_renderer("whatever");
86+
let got = cmd.supports_renderer("whatever").unwrap();
8787

8888
assert_eq!(got, true);
8989
}
@@ -92,7 +92,7 @@ fn example_supports_whatever() {
9292
fn example_doesnt_support_not_supported() {
9393
let cmd = example();
9494

95-
let got = cmd.supports_renderer("not-supported");
95+
let got = cmd.supports_renderer("not-supported").unwrap();
9696

9797
assert_eq!(got, false);
9898
}

0 commit comments

Comments
 (0)