Skip to content

Commit 5d47a9f

Browse files
committed
Tear down build correctly
Just missing the top level now
1 parent a10e05e commit 5d47a9f

2 files changed

Lines changed: 33 additions & 20 deletions

File tree

src/pdfbaker/document.py

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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():

src/pdfbaker/page.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ def __init__(
4545

4646
self.templates_dir = self["directories"]["templates"]
4747
self.images_dir = self["directories"]["images"]
48-
self.build_dir = self["directories"]["build"]
49-
self.dist_dir = self["directories"]["dist"]
48+
self.build_dir = page.document.config.build_dir
49+
self.dist_dir = page.document.config.dist_dir
5050

5151
if "template" not in self:
5252
raise ConfigurationError(

0 commit comments

Comments
 (0)