From df9d01baa5835d0eeb257846edbc34ea3d6018a4 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Sat, 30 Dec 2023 01:12:50 +0100 Subject: [PATCH] Initial commit --- .gitignore | 4 ++ .gitmodules | 3 ++ README.md | 3 ++ banking_breakdown/__init__.py | 0 banking_breakdown/__main__.py | 13 ++++++ banking_breakdown/latex_generator.py | 70 ++++++++++++++++++++++++++++ lib/latex-common | 1 + res/.latexmkrc | 3 ++ res/Dockerfile.alpine | 4 ++ 9 files changed, 101 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 README.md create mode 100644 banking_breakdown/__init__.py create mode 100644 banking_breakdown/__main__.py create mode 100644 banking_breakdown/latex_generator.py create mode 160000 lib/latex-common create mode 100644 res/.latexmkrc create mode 100644 res/Dockerfile.alpine diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4689dc8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +__pycache__/ +venv/ +build/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..8e71cd6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/latex-common"] + path = lib/latex-common + url = ssh://git@git.mercurial-manifold.eu:2224/an.tsouchlos/latex-common.git diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f9f502 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# banking-breakdown + +Visualize banking statements. \ No newline at end of file diff --git a/banking_breakdown/__init__.py b/banking_breakdown/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/banking_breakdown/__main__.py b/banking_breakdown/__main__.py new file mode 100644 index 0000000..225154e --- /dev/null +++ b/banking_breakdown/__main__.py @@ -0,0 +1,13 @@ +import pandas as pd +from banking_breakdown import latex_generator + + +def main(): + src = latex_generator.generate_latex() + latex_generator.build_document(src) + # df = pd.read_csv('res/statement.csv', delimiter=';') + # print(df['Betrag']) + + +if __name__ == "__main__": + main() diff --git a/banking_breakdown/latex_generator.py b/banking_breakdown/latex_generator.py new file mode 100644 index 0000000..0f7aedb --- /dev/null +++ b/banking_breakdown/latex_generator.py @@ -0,0 +1,70 @@ +import subprocess +import textwrap +import os +import shutil +import docker + + +def generate_latex() -> str: + result = textwrap.dedent("""\ + \\documentclass{article} + + % Packages necessary for common.tex + \\usepackage{amsmath} + \\usepackage{pgfplots} + \\pgfplotsset{compat=newest} + + % Other packages + \\usepackage{float} + \\usepackage{subcaption} + \\usepackage[a4paper, total={6.5in, 9in}]{geometry} + \\usetikzlibrary{positioning} + \\usepackage{ifthen} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%% Set common options %%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + \\input{../lib/latex-common/common.tex} + \\pgfplotsset{colorscheme/rocket} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%% Actual Document %%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + \\title{Banking Report} + \\author{} + + + \\begin{document} + + \\maketitle + + Test + + + \\end{document} + """) + + return result + + +def build_document(src: str): + os.makedirs(os.path.dirname("build/doc.tex"), exist_ok=True) + with open("build/doc.tex", "w") as out_file: + out_file.write(src) + + shutil.copyfile("res/.latexmkrc", "build/.latexmkrc") + + 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 doc.tex", + shell=True) diff --git a/lib/latex-common b/lib/latex-common new file mode 160000 index 0000000..bded242 --- /dev/null +++ b/lib/latex-common @@ -0,0 +1 @@ +Subproject commit bded242752b51c685fd6ed21a3506733476d5842 diff --git a/res/.latexmkrc b/res/.latexmkrc new file mode 100644 index 0000000..e87380c --- /dev/null +++ b/res/.latexmkrc @@ -0,0 +1,3 @@ +$pdflatex="pdflatex -shell-escape -interaction=nonstopmode -synctex=1 %O %S"; +$out_dir = 'build'; +$pdf_mode = 1; diff --git a/res/Dockerfile.alpine b/res/Dockerfile.alpine new file mode 100644 index 0000000..7fc51d8 --- /dev/null +++ b/res/Dockerfile.alpine @@ -0,0 +1,4 @@ +FROM alpine:3.19 + +RUN apk update && apk upgrade +RUN apk add make texlive texmf-dist-pictures