banking-breakdown/banking_breakdown/document_builder.py

39 lines
1.4 KiB
Python

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()