diff --git a/PFERD/crawler.py b/PFERD/crawler.py index 731cfb9..61f1868 100644 --- a/PFERD/crawler.py +++ b/PFERD/crawler.py @@ -269,6 +269,7 @@ class Crawler(ABC): """ with log.show_progress(): + self._output_dir.prepare() await self._run() await self._cleanup() diff --git a/PFERD/output_dir.py b/PFERD/output_dir.py index 02d5fe8..f9a7c99 100644 --- a/PFERD/output_dir.py +++ b/PFERD/output_dir.py @@ -142,6 +142,14 @@ class OutputDirectory: self._report = Report() + def prepare(self) -> None: + log.explain_topic(f"Creating base directory at {str(self._root.absolute())!r}") + + try: + self._root.mkdir(parents=True, exist_ok=True) + except OSError: + raise OutputDirError("Failed to create base directory") + def register_reserved(self, path: PurePath) -> None: self._report.mark_reserved(path) @@ -385,9 +393,6 @@ class OutputDirectory: self._report.add_file(info.path) async def cleanup(self) -> None: - if not self._root.exists(): - return - await self._cleanup_dir(self._root, PurePath(), delete_self=False) async def _cleanup(self, path: Path, pure: PurePath) -> None: