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: