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#"