39 lines
1.4 KiB
Python
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()
|