From 3c6c9311daa9a10ab889663149002bb79e2446e4 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Mon, 24 Jun 2024 15:13:43 -0700 Subject: [PATCH 1/4] client/container: bash: add hledger aliases The original intent of the `ledger` facade was to describe a general purpose "ledger" command abstraction; not specifically the `ledger` software (predecessor to hledger) nor the `ledger` hardware device. As `hledger` is currently the exclusive internal "ledger" component, adding `hledger` as an alias seems to be an appropriate-enough addition that won't break existing abstraction/functionality. --- .../container/shell/subprofile.bash.in | 7 ++++++- container/src/finance/finance.bash | 12 ++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/client/docker-finance.d/container/shell/subprofile.bash.in b/client/docker-finance.d/container/shell/subprofile.bash.in index 9a0423e..025c751 100644 --- a/client/docker-finance.d/container/shell/subprofile.bash.in +++ b/client/docker-finance.d/container/shell/subprofile.bash.in @@ -29,23 +29,28 @@ # CLI ledger alias @DOCKER_FINANCE_SUBPROFILE@_ledger='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger' +alias @DOCKER_FINANCE_SUBPROFILE@_hledger='@DOCKER_FINANCE_SUBPROFILE@_ledger' alias @DOCKER_FINANCE_SUBPROFILE@_bal='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger bal \ assets liabilities \ not:desc:balances\$ not:equity:balances\$ not:archive \ ' -# CLI UI +# Terminal UI alias @DOCKER_FINANCE_SUBPROFILE@_ui='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-ui -w \ assets liabilities \ not:desc:balances\$ not:equity:balances\$ not:archive \ ' +alias @DOCKER_FINANCE_SUBPROFILE@_ledger-ui='@DOCKER_FINANCE_SUBPROFILE@_ui' +alias @DOCKER_FINANCE_SUBPROFILE@_hledger-ui='@DOCKER_FINANCE_SUBPROFILE@_ui' # Web UI alias @DOCKER_FINANCE_SUBPROFILE@_web='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-web --serve --host=0.0.0.0 --base-url http://127.0.0.1:5000 --capabilities=view \ assets liabilities \ not:desc:balances\$ not:equity:balances\$ not:archive \ ' +alias @DOCKER_FINANCE_SUBPROFILE@_ledger-web='@DOCKER_FINANCE_SUBPROFILE@_web' +alias @DOCKER_FINANCE_SUBPROFILE@_hledger-web='@DOCKER_FINANCE_SUBPROFILE@_web' # Fetches, imports, generates taxes and reports (using defaults) alias @DOCKER_FINANCE_SUBPROFILE@_all='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ all' diff --git a/container/src/finance/finance.bash b/container/src/finance/finance.bash index 26c153b..914d48a 100755 --- a/container/src/finance/finance.bash +++ b/container/src/finance/finance.bash @@ -54,9 +54,9 @@ function main() edit \e[34;3mEdit existing container data\e[0m fetch \e[34;3mFetch remote accounts\e[0m import \e[34;3mImport CSVs for given year (default: current year)\e[0m - ledger \e[34;3mRun CLI ledger-based commands\e[0m - ledger-ui \e[34;3mStart ncurses-based UI\e[0m - ledger-web \e[34;3mStart web-based UI\e[0m + ledger \e[34;3mRun CLI accounting commands (hledger)\e[0m + ledger-ui \e[34;3mStart terminal UI (hledger-ui)\e[0m + ledger-web \e[34;3mStart web-based UI (hledger-web)\e[0m meta \e[34;3mSearch local financial metadata\e[0m reports \e[34;3mGenerate balance sheet, income statement, etc.\e[0m root \e[34;3mRun ROOT.cern instance for docker-finance analysis\e[0m @@ -107,13 +107,13 @@ function main() import) lib_finance::import "${@:3}" ;; - ledger) + ledger | hledger) lib_finance::ledger "${@:3}" ;; - ledger-ui) + ledger-ui | hledger-ui) lib_finance::ledger-ui "${@:3}" ;; - ledger-web) + ledger-web | hledger-web) lib_finance::ledger-web "${@:3}" ;; meta) From a461cda2ff2249056dd45e85d0897a1a5a5ccb5d Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Mon, 24 Jun 2024 15:45:13 -0700 Subject: [PATCH 2/4] container: bash: lib_edit: add iadd Upstream will still need to add comment/metadata functionality to iadd. --- container/src/finance/lib/internal/lib_edit.bash | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/container/src/finance/lib/internal/lib_edit.bash b/container/src/finance/lib/internal/lib_edit.bash index 619a821..7027a3d 100644 --- a/container/src/finance/lib/internal/lib_edit.bash +++ b/container/src/finance/lib/internal/lib_edit.bash @@ -157,7 +157,7 @@ function lib_edit::__parse_args() read -ra _read <<<"$_arg_type" for _type in "${_read[@]}"; do - if [[ ! "$_type" =~ ^fetch$|^manual$|^meta$|^preprocess$|^rules$|^shell$ ]]; then + if [[ ! "$_type" =~ ^fetch$|^iadd$|^manual$|^meta$|^preprocess$|^rules$|^shell$ ]]; then lib_utils::die_usage "$_usage" fi if [[ ! -z "$_arg_account" ]]; then @@ -209,16 +209,18 @@ function lib_edit::__edit() fetch) $EDITOR "$global_conf_fetch" ;; - manual) + iadd | manual) local _path="${global_child_profile_flow}/import/${global_child_profile}/_manual_/${global_arg_year}" [ ! -d "$_path" ] && mkdir -p "$_path" _path+="/post-import.journal" [ ! -f "$_path" ] && touch "$_path" + # TODO: upstream request to provide comment(N) entries + [[ "$_type" == "iadd" ]] && /usr/bin/hledger-iadd -f "$_path" + # TODO: option for editor type - $EDITOR "$_path" - #/usr/bin/hledger-iadd -f "$_path" # TODO: upstream request to provide comment(N) entries + [[ "$_type" == "manual" ]] && $EDITOR "$_path" ;; meta) # NOTE: From 369e2343cedca1326e22c7b547f2e8b7b585da33 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Mon, 24 Jun 2024 16:10:17 -0700 Subject: [PATCH 3/4] client/container: bash: trivial impl for `ledger-vui` Leverages journal to visidata for an alternative read-only terminal UI. --- .../container/shell/subprofile.bash.in | 5 +++++ container/src/finance/finance.bash | 3 +++ container/src/finance/lib/internal/lib_ledger.bash | 12 ++++++++++++ container/src/finance/lib/lib_finance.bash | 6 ++++++ 4 files changed, 26 insertions(+) diff --git a/client/docker-finance.d/container/shell/subprofile.bash.in b/client/docker-finance.d/container/shell/subprofile.bash.in index 025c751..7354ff0 100644 --- a/client/docker-finance.d/container/shell/subprofile.bash.in +++ b/client/docker-finance.d/container/shell/subprofile.bash.in @@ -44,6 +44,11 @@ alias @DOCKER_FINANCE_SUBPROFILE@_ui='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINA alias @DOCKER_FINANCE_SUBPROFILE@_ledger-ui='@DOCKER_FINANCE_SUBPROFILE@_ui' alias @DOCKER_FINANCE_SUBPROFILE@_hledger-ui='@DOCKER_FINANCE_SUBPROFILE@_ui' +# Terminal UI (visidata) +alias @DOCKER_FINANCE_SUBPROFILE@_vui='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-vui' +alias @DOCKER_FINANCE_SUBPROFILE@_ledger-vui='@DOCKER_FINANCE_SUBPROFILE@_vui' +alias @DOCKER_FINANCE_SUBPROFILE@_hledger-vui='@DOCKER_FINANCE_SUBPROFILE@_vui' + # Web UI alias @DOCKER_FINANCE_SUBPROFILE@_web='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-web --serve --host=0.0.0.0 --base-url http://127.0.0.1:5000 --capabilities=view \ assets liabilities \ diff --git a/container/src/finance/finance.bash b/container/src/finance/finance.bash index 914d48a..e889c1e 100755 --- a/container/src/finance/finance.bash +++ b/container/src/finance/finance.bash @@ -113,6 +113,9 @@ function main() ledger-ui | hledger-ui) lib_finance::ledger-ui "${@:3}" ;; + ledger-vui | hledger-vui) + lib_finance::ledger-vui "${@:3}" + ;; ledger-web | hledger-web) lib_finance::ledger-web "${@:3}" ;; diff --git a/container/src/finance/lib/internal/lib_ledger.bash b/container/src/finance/lib/internal/lib_ledger.bash index 32070c8..7eaf7d9 100644 --- a/container/src/finance/lib/internal/lib_ledger.bash +++ b/container/src/finance/lib/internal/lib_ledger.bash @@ -46,6 +46,12 @@ function lib_ledger::ledger-ui() lib_utils::catch $? } +function lib_ledger::ledger-vui() +{ + lib_ledger::__ledger-vui "$@" + lib_utils::catch $? +} + function lib_ledger::ledger-web() { lib_ledger::__ledger-web "$@" @@ -132,6 +138,12 @@ function lib_ledger::__ledger-ui() /usr/bin/hledger-ui -f "$global_child_profile_journal" "$@" } +function lib_ledger::__ledger-vui() +{ + /usr/bin/hledger -f "$global_child_profile_journal" print -O csv "$@" \ + | visidata --motd-url file:///dev/null --filetype csv +} + function lib_ledger::__ledger-web() { /usr/bin/hledger-web -f "$global_child_profile_journal" "$@" diff --git a/container/src/finance/lib/lib_finance.bash b/container/src/finance/lib/lib_finance.bash index b527a93..b144370 100644 --- a/container/src/finance/lib/lib_finance.bash +++ b/container/src/finance/lib/lib_finance.bash @@ -186,6 +186,12 @@ function lib_finance::ledger-ui() lib_utils::catch $? } +function lib_finance::ledger-vui() +{ + lib_ledger::ledger-vui "$@" + lib_utils::catch $? +} + function lib_finance::ledger-web() { lib_ledger::ledger-web "$@" From 5989fdc4a394fc80543fd1c1e1a72df6e232d811 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Mon, 24 Jun 2024 16:39:13 -0700 Subject: [PATCH 4/4] client: subprofile.bash.in: update hledger-web arg Upstream replaced --capabilities with --allow --- client/docker-finance.d/container/shell/subprofile.bash.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/docker-finance.d/container/shell/subprofile.bash.in b/client/docker-finance.d/container/shell/subprofile.bash.in index 7354ff0..80217b6 100644 --- a/client/docker-finance.d/container/shell/subprofile.bash.in +++ b/client/docker-finance.d/container/shell/subprofile.bash.in @@ -50,7 +50,7 @@ alias @DOCKER_FINANCE_SUBPROFILE@_ledger-vui='@DOCKER_FINANCE_SUBPROFILE@_vui' alias @DOCKER_FINANCE_SUBPROFILE@_hledger-vui='@DOCKER_FINANCE_SUBPROFILE@_vui' # Web UI -alias @DOCKER_FINANCE_SUBPROFILE@_web='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-web --serve --host=0.0.0.0 --base-url http://127.0.0.1:5000 --capabilities=view \ +alias @DOCKER_FINANCE_SUBPROFILE@_web='$DOCKER_FINANCE_CONTAINER_CMD @DOCKER_FINANCE_PROFILE@/@DOCKER_FINANCE_SUBPROFILE@ ledger-web --serve --host=0.0.0.0 --base-url http://127.0.0.1:5000 --allow=view \ assets liabilities \ not:desc:balances\$ not:equity:balances\$ not:archive \ '