mirror of
https://github.com/getpelican/pelican.git
synced 2026-06-04 15:36:55 +02:00
Use custom exception for (failing to) overwrite files
This commit is contained in:
parent
8fcfe13a76
commit
3de99f293a
2 changed files with 12 additions and 5 deletions
|
|
@ -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...',
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue