Cleanup build directory before preprocessors run to keep files generated by preprocessors

This commit is contained in:
Rongsong Shen 2019-02-16 12:17:26 +08:00
parent c068703028
commit b37f21a09b
1 changed files with 13 additions and 10 deletions

View File

@ -167,6 +167,19 @@ impl MDBook {
renderer.name().to_string(), renderer.name().to_string(),
); );
let name = renderer.name();
let build_dir = self.build_dir_for(name);
if build_dir.exists() {
debug!(
"Cleaning build dir for the \"{}\" renderer ({})",
name,
build_dir.display()
);
utils::fs::remove_dir_content(&build_dir)
.chain_err(|| "Unable to clear output directory")?;
}
for preprocessor in &self.preprocessors { for preprocessor in &self.preprocessors {
if preprocessor_should_run(&**preprocessor, renderer, &self.config) { if preprocessor_should_run(&**preprocessor, renderer, &self.config) {
debug!("Running the {} preprocessor.", preprocessor.name()); debug!("Running the {} preprocessor.", preprocessor.name());
@ -183,16 +196,6 @@ impl MDBook {
fn render(&self, preprocessed_book: &Book, renderer: &Renderer) -> Result<()> { fn render(&self, preprocessed_book: &Book, renderer: &Renderer) -> Result<()> {
let name = renderer.name(); let name = renderer.name();
let build_dir = self.build_dir_for(name); let build_dir = self.build_dir_for(name);
if build_dir.exists() {
debug!(
"Cleaning build dir for the \"{}\" renderer ({})",
name,
build_dir.display()
);
utils::fs::remove_dir_content(&build_dir)
.chain_err(|| "Unable to clear output directory")?;
}
let render_context = RenderContext::new( let render_context = RenderContext::new(
self.root.clone(), self.root.clone(),