Skip to content

Commit

Permalink
feat: skip-if-optional flag to skip running even if mdbook-pandoc
Browse files Browse the repository at this point in the history
… is available
  • Loading branch information
max-heller committed Jun 2, 2024
1 parent a4c2703 commit c93663d
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,19 @@ 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<String, pandoc::Profile>,
#[serde(default = "defaults::enabled")]
pub keep_preprocessed: bool,
pub hosted_html: Option<String>,
/// Code block related configuration.
#[serde(default = "Default::default")]
pub code: CodeConfig,
#[serde(default = "Default::default")]
pub optional: bool,
/// Never run the renderer if it is marked as optional.
#[serde(default = "Default::default")]
pub skip_if_optional: bool,
}

/// Configuration for tweaking how code blocks are rendered.
Expand Down Expand Up @@ -97,6 +102,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.skip_if_optional && cfg.optional {
log::info!("Skipping rendering since `skip-if-optional` and `optional` are both set");
return Ok(());
}

let html_cfg: Option<HtmlConfig> = ctx
.config
.get_deserialized_opt("output.html")
Expand Down Expand Up @@ -1167,6 +1177,23 @@ colorlinks = false
"###)
}

#[test]
fn skip_if_optional() {
let cfg = r#"
[output.pandoc]
optional = true
skip-if-optional = 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 `skip-if-optional` and `optional` are both set
"###)
}

#[test]
fn redirects() {
let cfg = r#"
Expand Down

0 comments on commit c93663d

Please sign in to comment.