diff --git a/src/config.rs b/src/config.rs index 36190ebf..d56614d7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -124,7 +124,7 @@ impl Config { /// > when building the book with something like /// > /// > ```text - /// > $ export MDBOOK_BOOK="{'title': 'My Awesome Book', authors: ['Michael-F-Bryan']}" + /// > $ export MDBOOK_BOOK='{"title": "My Awesome Book", "authors": ["Michael-F-Bryan"]}' /// > $ mdbook build /// > ``` /// @@ -142,6 +142,17 @@ impl Config { let parsed_value = serde_json::from_str(&value) .unwrap_or_else(|_| serde_json::Value::String(value.to_string())); + if key == "book" || key == "build" { + if let serde_json::Value::Object(ref map) = parsed_value { + // To `set` each `key`, we wrap them as `prefix.key` + for (k, v) in map { + let full_key = format!("{}.{}", key, k); + self.set(&full_key, v).expect("unreachable"); + } + return; + } + } + self.set(key, parsed_value).expect("unreachable"); } }