fix: add error handling for missing input files
All checks were successful
Continuous Integration / Build Package (push) Successful in 24s
Continuous Integration / Lint, Check & Test (push) Successful in 34s

Display human-readable errors when the markdown file, photo, or
signature cannot be found instead of failing with a stack trace.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Konstantin Fickel 2026-03-06 07:02:10 +01:00
parent bc186be0f9
commit 03b8c509c3
Signed by: kfickel
GPG key ID: A793722F9933C1A5
2 changed files with 20 additions and 3 deletions

11
main.py
View file

@ -15,7 +15,16 @@ def generate(
),
) -> None:
"""Generate a PDF CV from a Markdown file with YAML frontmatter."""
result = generate_pdf(input_file, output_file)
if not input_file.exists():
typer.echo(f"Error: Markdown file not found: {input_file}", err=True)
raise typer.Exit(1)
try:
result = generate_pdf(input_file, output_file)
except FileNotFoundError as e:
typer.echo(f"Error: {e}", err=True)
raise typer.Exit(1)
typer.echo(f"Generated {result}")

View file

@ -17,8 +17,16 @@ def generate_pdf(input_file: Path, output_file: Path | None = None) -> Path:
letter_body: str = markdown.markdown(post.content)
input_dir = Path(input_file).resolve().parent
cv.photo = str(input_dir / cv.photo)
cv.signature = str(input_dir / cv.signature)
photo_path = input_dir / cv.photo
signature_path = input_dir / cv.signature
if not photo_path.exists():
raise FileNotFoundError(f"Photo not found: {photo_path}")
if not signature_path.exists():
raise FileNotFoundError(f"Signature not found: {signature_path}")
cv.photo = str(photo_path)
cv.signature = str(signature_path)
env = Environment(loader=FileSystemLoader(str(SRC_DIR)))
template = env.get_template("cv.html.j2")