From 02f78d4c0e20275caffe75521adeb1dc56f260aa Mon Sep 17 00:00:00 2001 From: Tony Grosinger Date: Tue, 19 Jul 2022 10:17:15 -0700 Subject: [PATCH] Create docker-compose to run ledger utilities --- .env | 7 +++++++ .gitignore | 3 +++ .gitmodules | 3 +++ Dockerfile | 21 --------------------- README.md | 17 +++++++++++++++++ bin/add | 3 +++ bin/hledger | 3 +++ bin/ledger | 3 +++ bin/ledgerbil | 3 +++ bin/reconcile | 3 +++ bin/sort | 3 +++ data/.gitinclude | 0 docker-compose.yaml | 34 ++++++++++++++++++++++++---------- ledger-analytics/Dockerfile | 8 ++++++++ ledgerbil | 1 + metaledger | 8 -------- 16 files changed, 81 insertions(+), 39 deletions(-) create mode 100644 .env create mode 100644 .gitignore create mode 100644 .gitmodules delete mode 100644 Dockerfile create mode 100644 README.md create mode 100644 bin/add create mode 100644 bin/hledger create mode 100644 bin/ledger create mode 100644 bin/ledgerbil create mode 100644 bin/reconcile create mode 100644 bin/sort create mode 100644 data/.gitinclude mode change 100644 => 100755 docker-compose.yaml create mode 100644 ledger-analytics/Dockerfile create mode 160000 ledgerbil delete mode 100644 metaledger diff --git a/.env b/.env new file mode 100644 index 0000000..f1c5b80 --- /dev/null +++ b/.env @@ -0,0 +1,7 @@ +# The parent folder containing your ledger files +LEDGER_DIR=data +# The name of your primary ledger file +LEDGER_FILE=all.ledger + +HLEDGER_PORT=5000 +HLEDGER_BASE_URL=http://localhost:5000 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8d777a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +data/* +!data/.gitinclude +ledgerbil-settings.py \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ab23254 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ledgerbil"] + path = ledgerbil + url = git@github.com:scarpent/ledgerbil.git diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 25213c9..0000000 --- a/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM dastapov/hledger:1.18.1 - -WORKDIR /data - -RUN sudo useradd \ - --shell /bin/bash \ - --home-dir /data \ - --no-create-home \ - --uid 1000 \ - hledger-user - -# Setup for ledgerbill -RUN sudo apt update && sudo apt install -y curl python3 python3-pip -RUN sudo mkdir /ledgerbil \ - && sudo chown hledger /ledgerbil \ - && curl -L https://github.com/scarpent/ledgerbil/archive/main.tar.gz | tar -xz --strip-components=1 -C /ledgerbil \ - && cd /ledgerbil \ - && pip3 install -r requirements.txt -RUN echo 'alias ledgerbil="python3 /ledgerbil/main.py"' >> ~/.bashrc - - diff --git a/README.md b/README.md new file mode 100644 index 0000000..d30ca93 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# MetaLedger + +## Setting Up + +- Initialize the submodules + + ```bash + git submodule init + git submodule update + ``` + +- Put your ledger files in the data folder. +- Edit `.env` and fill in your desired values. +- Copy `ledgerbil/ledgerbil/settings.py.example` to `ledgerbil-settings.py` and fill in the values with your data. +- Start the services with `docker-compose up -d` + +You can now access the web UI for hledger at your chosen URL (from the `.env` file), ledger-analytics, and use the helper scripts in the `bin` directory to use the various utilities. All utilities should be pre-configured with your ledger file location. diff --git a/bin/add b/bin/add new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/add @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/bin/hledger b/bin/hledger new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/hledger @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/bin/ledger b/bin/ledger new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/ledger @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/bin/ledgerbil b/bin/ledgerbil new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/ledgerbil @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/bin/reconcile b/bin/reconcile new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/reconcile @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/bin/sort b/bin/sort new file mode 100644 index 0000000..151adfd --- /dev/null +++ b/bin/sort @@ -0,0 +1,3 @@ +#!/bin/bash + +echo TODO diff --git a/data/.gitinclude b/data/.gitinclude new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yaml b/docker-compose.yaml old mode 100644 new mode 100755 index 7915a42..5a73545 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,12 +1,26 @@ version: "3" services: - metaledger: - image: "tgrosinger/metaledger" - build: "." - ports: - - "5000:5000" - user: "1000" - environment: - - HLEDGER_JOURNAL_FILE=/data/all.ledger - volumes: - - "/home/tgrosinger/metaledger:/data" + # TODO: Consider adding https://github.com/sbridges/ledgerble + ledgerbil: + # https://github.com/scarpent/ledgerbil + image: "ledgerbil:latest" + build: "ledgerbil/." + volumes: + - "${LEDGER_DIR}:/data" + - "ledgerbil-settings.py:/code/ledgerbil/settings.py" + ledger-analytics: + # https://github.com/kendricktan/ledger-analytics + image: "ledger-analytics:latest" + build: "ledger-analytics/." + volumes: + - "${LEDGER_DIR}:/data" + entrypoint: ["ledger-analytics", "-f", "/data/${LEDGER_FILE}"] + hledger: + image: "dastapov/hledger:1.26" + ports: + - "${HLEDGER_PORT}:5000" + user: "1000" + environment: + - HLEDGER_JOURNAL_FILE=/data/${LEDGER_FILE} + volumes: + - "${LEDGER_DIR}:/data" diff --git a/ledger-analytics/Dockerfile b/ledger-analytics/Dockerfile new file mode 100644 index 0000000..a28d4d9 --- /dev/null +++ b/ledger-analytics/Dockerfile @@ -0,0 +1,8 @@ +FROM node:lts-slim + +RUN npm install --location=global ledger-analytics +RUN apt update && apt install -y ledger + +EXPOSE 3000 + +ENTRYPOINT ledger-analytics diff --git a/ledgerbil b/ledgerbil new file mode 160000 index 0000000..02dd7a8 --- /dev/null +++ b/ledgerbil @@ -0,0 +1 @@ +Subproject commit 02dd7a843850a781c49881fb0e7026ebf98b189f diff --git a/metaledger b/metaledger deleted file mode 100644 index 09b038e..0000000 --- a/metaledger +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -docker run \ - --rm \ - -it \ - --entrypoint bash \ - -v /mnt/c/Users/tony/Documents/atrium/Ledger.md:/data/all.ledger \ - -e "LEDGER_FILE=/data/all.ledger" \ - tgrosinger/metaledger