diff --git a/pelican/generators.py b/pelican/generators.py index 65fcb9c3..b7eef104 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -30,6 +30,7 @@ from pelican.utils import ( posixize_path, process_translations, ) +from pelican.writers import FileOverwriteFailedError logger = logging.getLogger(__name__) @@ -584,7 +585,7 @@ class ArticlesGenerator(CachingGenerator): page_name=tag.page_name, all_articles=self.articles, ) - except RuntimeError: + except FileOverwriteFailedError: if not tag.slug: logger.info( 'Tag "%s" has an invalid slug; skipping writing tag page...', @@ -615,7 +616,7 @@ class ArticlesGenerator(CachingGenerator): page_name=cat.page_name, all_articles=self.articles, ) - except RuntimeError: + except FileOverwriteFailedError: if not cat.slug: logger.info( 'Category "%s" has an invalid slug; skipping writing category page...', @@ -646,7 +647,7 @@ class ArticlesGenerator(CachingGenerator): page_name=aut.page_name, all_articles=self.articles, ) - except RuntimeError: + except FileOverwriteFailedError: if not aut.slug: logger.info( 'Author "%s" has an invalid slug; skipping writing author page...', diff --git a/pelican/writers.py b/pelican/writers.py index 009d761a..07aa6d42 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -18,6 +18,10 @@ from pelican.utils import ( logger = logging.getLogger(__name__) +class FileOverwriteFailedError(RuntimeError): + """Failed to overwrite an existing file.""" + + class Writer: def __init__(self, output_path, settings=None): self.output_path = output_path @@ -107,14 +111,16 @@ class Writer: """ if filename in self._overridden_files: if override: - raise RuntimeError(f"File {filename} is set to be overridden twice") + raise FileOverwriteFailedError( + f"File {filename} is set to be overridden twice" + ) logger.info("Skipping %s", filename) filename = os.devnull elif filename in self._written_files: if override: logger.info("Overwriting %s", filename) else: - raise RuntimeError(f"File {filename} is to be overwritten") + raise FileOverwriteFailedError(f"File {filename} is to be overwritten") if override: self._overridden_files.add(filename) self._written_files.add(filename)