paths are not all required

This commit is contained in:
Torsten Ueberschar
2024-09-16 11:34:42 +02:00
parent 43163e2ac7
commit 660e75d719
2 changed files with 17 additions and 7 deletions

View File

@@ -63,7 +63,7 @@ class HtmlTemplate:
source_html, # the HTML to convert source_html, # the HTML to convert
path=str(self.path_to_template / 'fonts'), path=str(self.path_to_template / 'fonts'),
dest=result_file dest=result_file
) # file handle to recieve result ) # file handle to receive result
# close output file # close output file
result_file.close() # close output file result_file.close() # close output file

View File

@@ -2,7 +2,7 @@ import argparse
import yaml import yaml
import locale import locale
from pathlib import Path from pathlib import Path, PurePath
from datetime import datetime from datetime import datetime
from invoice_generator import html_generator from invoice_generator import html_generator
@@ -47,15 +47,17 @@ def merge_envelope_data_into_invoice_data(invoice_data, source_data):
def main(): def main():
locale.setlocale(locale.LC_ALL, 'de_DE.utf8') 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('Simple invoice generator for freelancers and small businesses by Torsten Ueberschar')
print() print()
parser = argparse.ArgumentParser(description='Read invoice and envelope data from yaml file') 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('-b', '--base', type=str, required=False, default=f'{cwd}', help='base directory for invoice and envelope files')
parser.add_argument('-i', '--invoice', type=str, required=True, help='Invoice file name')
parser.add_argument('-e', '--envelope', type=str, required=False, default='envelope.yaml', parser.add_argument('-e', '--envelope', type=str, required=False, default='envelope.yaml',
help='Envelope file name') 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') help='directory for template files')
parser.add_argument('-i', '--invoice', type=str, required=True, help='Invoice file name')
args = parser.parse_args() args = parser.parse_args()
@@ -128,12 +130,20 @@ def main():
print(f'Error: {e}') print(f'Error: {e}')
return 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) template = generator.prepare_template(invoice_data, envelope_data)
try: try:
print('Generating invoice...') 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}') print(f'Invoice PDF: {invoice_pdf}')
generator.convert_html_to_pdf(template, invoice_pdf) generator.convert_html_to_pdf(template, invoice_pdf)
except Exception as e: except Exception as e: