From 660e75d719adad7149a31a1ba86d20df46a8ae10 Mon Sep 17 00:00:00 2001 From: Torsten Ueberschar Date: Mon, 16 Sep 2024 11:34:42 +0200 Subject: [PATCH] paths are not all required --- src/invoice_generator/html_generator.py | 2 +- src/main.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/invoice_generator/html_generator.py b/src/invoice_generator/html_generator.py index cb74880..8b1ba47 100644 --- a/src/invoice_generator/html_generator.py +++ b/src/invoice_generator/html_generator.py @@ -63,7 +63,7 @@ class HtmlTemplate: source_html, # the HTML to convert path=str(self.path_to_template / 'fonts'), dest=result_file - ) # file handle to recieve result + ) # file handle to receive result # close output file result_file.close() # close output file diff --git a/src/main.py b/src/main.py index a48aa5d..c06e56c 100644 --- a/src/main.py +++ b/src/main.py @@ -2,7 +2,7 @@ import argparse import yaml import locale -from pathlib import Path +from pathlib import Path, PurePath from datetime import datetime from invoice_generator import html_generator @@ -47,15 +47,17 @@ def merge_envelope_data_into_invoice_data(invoice_data, source_data): def main(): locale.setlocale(locale.LC_ALL, 'de_DE.utf8') + cwd = Path.cwd().resolve() + print('Simple invoice generator for freelancers and small businesses by Torsten Ueberschar') print() parser = argparse.ArgumentParser(description='Read invoice and envelope data from yaml file') - parser.add_argument('-b', '--base', type=str, required=True, help='base directory for invoice and envelope files') - parser.add_argument('-i', '--invoice', type=str, required=True, help='Invoice file name') + parser.add_argument('-b', '--base', type=str, required=False, default=f'{cwd}', help='base directory for invoice and envelope files') parser.add_argument('-e', '--envelope', type=str, required=False, default='envelope.yaml', help='Envelope file name') - parser.add_argument('-t', '--template', type=str, required=False, default='template', + parser.add_argument('-t', '--template', type=str, required=False, default='templates', help='directory for template files') + parser.add_argument('-i', '--invoice', type=str, required=True, help='Invoice file name') args = parser.parse_args() @@ -128,12 +130,20 @@ def main(): print(f'Error: {e}') return - generator = html_generator.HtmlTemplate(args.template) + if not PurePath(args.template).is_absolute(): + template_dir = (Path(args.base) / args.template).resolve() + else: + template_dir = Path(args.template).resolve() + + generator = html_generator.HtmlTemplate(template_dir) template = generator.prepare_template(invoice_data, envelope_data) try: print('Generating invoice...') - invoice_pdf = Path(invoice_data.Id).with_suffix('.pdf') + output_path = Path(args.base) / 'pdf' + output_path.mkdir(parents=True, exist_ok=True) + output_path = output_path / f'{invoice_data.Id}.pdf' + invoice_pdf = output_path.resolve() print(f'Invoice PDF: {invoice_pdf}') generator.convert_html_to_pdf(template, invoice_pdf) except Exception as e: