import subprocess import os import shutil from banking_breakdown import types def _copy_resources(): os.makedirs(os.path.dirname("build/report.tex"), exist_ok=True) shutil.copyfile("res/report.tex", "build/report.tex") shutil.copyfile("res/.latexmkrc", "build/.latexmkrc") def _serialize_report_data(report_data: types.ReportData): report_data.net_income.to_csv('build/net_income.csv', index=False) report_data.category_overview.to_csv('build/category_overview.csv', index=False) report_data.expenses_by_category.to_csv('build/expenses_by_category.csv', index=False) report_data.total_value.to_csv('build/total_value.csv', index=False) report_data.detailed_balance.to_csv('build/detailed_balance.csv', index=False) def _compile_document(): subprocess.call("docker build . -f res/Dockerfile.alpine" " -t banking-breakdown", shell=True) subprocess.call("docker run --rm -u `id -u`:`id -g`" " -v $(realpath .):/project" " -w /project/build banking-breakdown" " latexmk -pdf report.tex", shell=True) def build_document(report_data: types.ReportData): _copy_resources() _serialize_report_data(report_data) _compile_document()