@@ -76,8 +76,8 @@ def __init__(
7676 self .document .log_trace (self .pretty ())
7777
7878 self .bake_path = self ["directories" ]["config" ] / "bake.py"
79- self .build_dir = self ["directories" ]["build" ]
80- self .dist_dir = self ["directories" ]["dist" ]
79+ self .build_dir = self ["directories" ]["build" ] / self . name
80+ self .dist_dir = self ["directories" ]["dist" ] / self . name
8181
8282 if "pages" not in self :
8383 raise ConfigurationError (
@@ -156,22 +156,32 @@ def _process_with_custom_bake(self, bake_path: Path) -> Path | list[Path]:
156156
157157 def process (self ) -> Path | list [Path ]:
158158 """Process document using standard processing."""
159- if "variants" in self .config :
160- # Multiple PDF documents
161- pdf_files = []
162- for variant in self .config ["variants" ]:
163- self .log_info_subsection ('Processing variant "%s"...' , variant ["name" ])
164- variant_config = deep_merge (self .config , variant )
165- variant_config ["variant" ] = variant
166- variant_config = render_config (variant_config )
167- page_pdfs = self ._process_pages (variant_config )
168- pdf_files .append (self ._combine_and_compress (page_pdfs , variant_config ))
169- return pdf_files
170-
171- # Single PDF document
172- doc_config = render_config (self .config )
173- page_pdfs = self ._process_pages (doc_config )
174- return self ._combine_and_compress (page_pdfs , doc_config )
159+ try :
160+ if "variants" in self .config :
161+ # Multiple PDF documents
162+ pdf_files = []
163+ for variant in self .config ["variants" ]:
164+ self .log_info_subsection (
165+ 'Processing variant "%s"...' , variant ["name" ]
166+ )
167+ variant_config = deep_merge (self .config , variant )
168+ variant_config ["variant" ] = variant
169+ variant_config = render_config (variant_config )
170+ page_pdfs = self ._process_pages (variant_config )
171+ pdf_files .append (
172+ self ._combine_and_compress (page_pdfs , variant_config )
173+ )
174+ return pdf_files
175+
176+ # Single PDF document
177+ doc_config = render_config (self .config )
178+ page_pdfs = self ._process_pages (doc_config )
179+ return self ._combine_and_compress (page_pdfs , doc_config )
180+ except Exception :
181+ # Ensure build directory is cleaned up if processing fails
182+ if not self .baker .keep_build :
183+ self .teardown ()
184+ raise
175185
176186 def _process_pages (self , config : dict [str , Any ]) -> list [Path ]:
177187 """Process pages with given configuration."""
@@ -222,6 +232,9 @@ def _combine_and_compress(
222232
223233 def teardown (self ) -> None :
224234 """Clean up build directory after successful processing."""
235+ self .log_debug_subsection (
236+ "Tearing down build directory: %s" , self .config .build_dir
237+ )
225238 if self .config .build_dir .exists ():
226239 # Remove all files in the build directory
227240 for file_path in self .config .build_dir .iterdir ():
0 commit comments