Skip to content

Commit 68a7572

Browse files
committed
Maintain preprocessors/backends execution order as defined in book.toml
There's a regression caused by recent refactor work, as it used to execute preprocessors/backends in order as defined in book.toml, but now this is not the case, which causes trouble when some backends depend on the result from another backend (e.g. mdbook-pdf). The root cause is that a HashMap has no order, so this PR switch this into BTreeMap instead. Signed-off-by: Hollow Man <[email protected]>
1 parent 0494dc1 commit 68a7572

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

crates/mdbook-core/src/config.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ use crate::utils::log_backtrace;
4848
use anyhow::{Context, Error, Result, bail};
4949
use log::{debug, trace};
5050
use serde::{Deserialize, Serialize};
51-
use std::collections::HashMap;
51+
use std::collections::{BTreeMap, HashMap};
5252
use std::env;
5353
use std::fs::File;
5454
use std::io::Read;
@@ -214,15 +214,15 @@ impl Config {
214214
}
215215

216216
/// Returns the configuration for all preprocessors.
217-
pub fn preprocessors<'de, T: Deserialize<'de>>(&self) -> Result<HashMap<String, T>> {
217+
pub fn preprocessors<'de, T: Deserialize<'de>>(&self) -> Result<BTreeMap<String, T>> {
218218
self.preprocessor
219219
.clone()
220220
.try_into()
221221
.with_context(|| "Failed to read preprocessors")
222222
}
223223

224224
/// Returns the configuration for all renderers.
225-
pub fn outputs<'de, T: Deserialize<'de>>(&self) -> Result<HashMap<String, T>> {
225+
pub fn outputs<'de, T: Deserialize<'de>>(&self) -> Result<BTreeMap<String, T>> {
226226
self.output
227227
.clone()
228228
.try_into()

0 commit comments

Comments
 (0)