From a10f175c76d75264d876a90ac1f1f500a3fc60be Mon Sep 17 00:00:00 2001 From: Max Heller Date: Wed, 10 Jul 2024 09:12:10 -0400 Subject: [PATCH] feat: `disabled` flag to disable rendering even if `mdbook-pandoc` is available (#93) Adds a `disabled` flag to disable rendering even if `mdbook-pandoc` is available. Since rendering may rely on external dependencies, this can be used to e.g. disable rendering except in CI where needed dependencies are known to be installed. Related to https://github.com/google/mdbook-i18n-helpers/issues/200#issuecomment-2220035461 --- src/lib.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 351d175..1bc6cde 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,7 @@ use preprocess::Preprocessor; #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] struct Config { - #[serde(rename = "profile")] + #[serde(rename = "profile", default = "Default::default")] pub profiles: HashMap, #[serde(default = "defaults::enabled")] pub keep_preprocessed: bool, @@ -29,6 +29,9 @@ struct Config { /// Code block related configuration. #[serde(default = "Default::default")] pub code: CodeConfig, + /// Skip running the renderer. + #[serde(default = "Default::default")] + pub disabled: bool, } /// Configuration for tweaking how code blocks are rendered. @@ -97,6 +100,11 @@ impl mdbook::Renderer for Renderer { .with_context(|| format!("Unable to deserialize {}", Self::CONFIG_KEY))? .ok_or(anyhow!("No {} table found", Self::CONFIG_KEY))?; + if cfg.disabled { + log::info!("Skipping rendering since `disabled` is set"); + return Ok(()); + } + let html_cfg: Option = ctx .config .get_deserialized_opt("output.html") @@ -1410,6 +1418,22 @@ colorlinks = false "###) } + #[test] + fn disabled() { + let cfg = r#" +[output.pandoc] +disabled = true + "#; + let output = MDBook::init() + .mdbook_config(mdbook::Config::from_str(cfg).unwrap()) + .build(); + insta::assert_snapshot!(output, @r###" + ├─ log output + │ INFO mdbook::book: Running the pandoc backend + │ INFO mdbook_pandoc: Skipping rendering since `disabled` is set + "###) + } + #[test] fn redirects() { let cfg = r#"