17 Commits

Author SHA1 Message Date
6692aa6db0 Merge pull request #331 into master
50245cf0 client/container: completion: add TODOs for `bash-completion` (Aaron Fiore)
8bc196ef client: manifest: archlinux: add `bash-completion` package to base (Aaron Fiore)
65aa5ef9 client: Dockerfiles: remote: archlinux: add `bash-completion` package to base (Aaron Fiore)
2026-03-20 13:29:22 -07:00
50245cf033 client/container: completion: add TODOs for bash-completion 2026-03-20 12:33:57 -07:00
8bc196eff6 client: manifest: archlinux: add bash-completion package to base 2026-03-20 12:33:45 -07:00
65aa5ef9d0 client: Dockerfiles: remote: archlinux: add bash-completion package to base 2026-03-20 12:33:36 -07:00
1ea16ab580 Merge pull request #330 into master
fb4566e3 container: hledger-flow: ethereum-based: compound: fix missing INCOME tag (Aaron Fiore)
2026-03-19 11:19:13 -07:00
fb4566e320 container: hledger-flow: ethereum-based: compound: fix missing INCOME tag 2026-03-19 10:47:15 -07:00
beae62c884 Merge pull request #329 into master
22338eb5 container: hledger-flow: ethereum-based: add to Ethereum spam rules (Aaron Fiore)
2026-03-19 10:45:25 -07:00
22338eb5ac container: hledger-flow: ethereum-based: add to Ethereum spam rules 2026-03-18 14:17:51 -07:00
72ee9b9607 Merge pull request #328 into master
76505b6a CHANGELOG: add 1.4.1 (Aaron Fiore)
c6703ad7 client: manifest: bump version to v1.4.1 (Aaron Fiore)
2026-03-18 12:25:21 -07:00
76505b6a5e CHANGELOG: add 1.4.1 2026-03-18 12:23:29 -07:00
c6703ad706 client: manifest: bump version to v1.4.1 2026-03-18 10:43:51 -07:00
4417122fee Merge pull request #327 into master
6bd16952 container: hledger-flow: trezor: template: add new FS mockup (Aaron Fiore)
35d23958 container: hledger-flow: trezor: add v25.9.1+ FS / backward compat (Aaron Fiore)
2026-03-18 10:33:26 -07:00
6bd16952a6 container: hledger-flow: trezor: template: add new FS mockup 2026-03-18 10:02:39 -07:00
35d239588d container: hledger-flow: trezor: add v25.9.1+ FS / backward compat 2026-03-18 09:44:34 -07:00
745984766d Merge pull request #326 into master
38b2633e container: hledger-flow: lib_preprocess: add custom delim when testing (Aaron Fiore)
e3598fce container: hledger-flow: lib_preprocess: bash quote given column(s) (Aaron Fiore)
2026-03-18 09:43:16 -07:00
38b2633e6c container: hledger-flow: lib_preprocess: add custom delim when testing
given header column(s).
2026-03-18 09:39:47 -07:00
e3598fce8c container: hledger-flow: lib_preprocess: bash quote given column(s)
when testing header.
2026-03-17 16:41:53 -07:00
10 changed files with 131 additions and 13 deletions

View File

@@ -18,9 +18,24 @@
# Changelog (`docker-finance`)
## 1.4.1 - 2026-03-18
This patch release fixes broken `import` for Trezor Suite v25.9.1+ by adding new FS support and backward compatibility.
### 1.4.1 - Fixes
- Add bash quotes when testing column(s) of given header and add custom delim support (lib_preprocess) ([#326](https://gitea.evergreencrypto.co/EvergreenCrypto/docker-finance/pulls/326))
- Add Trezor Suite v25.9.1+ FS support and backward compatibility ([#327](https://gitea.evergreencrypto.co/EvergreenCrypto/docker-finance/pulls/327))
* For devs (to generate new FS mockup), with `finance` image, run: `gen type=flow account=trezor dev=on confirm=no profile=<profile/subprofile>`
### 1.4.1 - Contributors
- Aaron Fiore
## 1.4.0 - 2026-03-16
This release brings a minor `dfi` fix (`fetch`), a new `dfi` feature (custom compose merge file functionality), `dfi` enhancements (base image and end-user), and patch releases for `hledger-flow` and a ROOT.cern (`root`).
This release brings a minor `dfi` fix (`fetch`), a new `dfi` feature (custom compose merge file functionality), `dfi` enhancements (base image and end-user), and patch releases for `hledger-flow` and ROOT.cern (`root`).
### 1.4.0 - Fixes

View File

@@ -49,6 +49,7 @@ RUN pacman -Syu \
# Base packages
RUN pacman -Syu \
bash-completion \
bc \
csvkit \
vim \

View File

@@ -20,7 +20,7 @@
#
# Release version (tag format)
version: "v1.4.0"
version: "v1.4.1"
# Container dependencies (used by `version` command)
# NOTE: this must stay inline with Dockerfiles
@@ -36,6 +36,7 @@ container:
commands:
base:
packages:
- "bash-completion"
- "bc"
- "csvkit"
- "vim"

View File

@@ -17,6 +17,28 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# TODO:
#
# - Refactor using `bash-completion` "library" but keep backward compatibility,
# as this would otherwise break the "no more than 3 dependencies" approach to client-side `dfi`.
#
# - When possible, add completion to existing `dfi` arguments that aren't completing
# * e.g., `dfi archlinux/${USER}:default edit type=` -> `dfi archlinux/${USER}:default edit type=rules...`
#
# The not-so-straightforward resolution to this TODO hinges on the fact that
# the default delim for all `dfi` completion is the `=` character (which also exists in `COMP_WORDBREAKS`).
#
# One resolution can be found in:
#
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/completions-core/dd.bash
#
# See also:
#
# - https://github.com/scop/bash-completion/tree/main/completions-core
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L1105-L1132
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L1450-L1454
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L2964-L2968
# WARNING: because of completion, the docker-finance environment file
# is never read. Ergo, for debugging, you'll need to run the following
# with log-level 1 or 2:

View File

@@ -2,7 +2,7 @@
# docker-finance | modern accounting for the power-user
#
# Copyright (C) 2024-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
# Copyright (C) 2024-2026 Aaron Fiore (Founder, Evergreen Crypto LLC)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,6 +17,28 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# TODO:
#
# - Refactor using `bash-completion` "library".
# * i.e., remove direct access to COMP* and use what's available, etc.
#
# - Add completion to existing `dfi` arguments that aren't completing.
# * e.g., `dfi profile/subprofile edit type=` -> `dfi profile/subprofile edit type=rules...`
#
# The not-so-straightforward resolution to this TODO hinges on the fact that
# the default delim for all `dfi` completion is the `=` character (which also exists in `COMP_WORDBREAKS`).
#
# One resolution can be found in:
#
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/completions-core/dd.bash
#
# See also:
#
# - https://github.com/scop/bash-completion/tree/main/completions-core
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L1105-L1132
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L1450-L1454
# - https://github.com/scop/bash-completion/blob/c63826f8678e7d1fd36cf188bf1ba2eccaf2552e/bash_completion#L2964-L2968
# shellcheck disable=SC2154
[ "$DOCKER_FINANCE_DEBUG" == 2 ] && set -xv

View File

@@ -1,6 +1,6 @@
# docker-finance | modern accounting for the power-user
#
# Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
# Copyright (C) 2021-2026 Aaron Fiore (Founder, Evergreen Crypto LLC)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -131,6 +131,7 @@ if %to_address (^0x39aa39c021dfbae8fac545936693ac917d5e7563$|^0x4ddc2d193948926d
if %direction ^IN$
& %contract_address ^0xc00e94cb662c3520282e6f5717214004a7f26888$
& %from_address ^0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b$
comment blockchain:%blockchain, type:%type, block:%block_number, blockid:%block_hash, index:%tx_index, subaccount_address:%subaccount_address, contract_address:%contract_address, from_address:%from_address, to_address:%to_address, txid:%tx_hash, direction:%direction, taxed_as:INCOME
account2 income:%account_name:%subaccount_name:%blockchain:%symbol
comment2 %date +0000,INCOME,%account_name:%subaccount_name:%blockchain,%symbol,%amount_,USD,,COMP rewards

View File

@@ -0,0 +1,2 @@
Timestamp,Date,Time,Type,Transaction ID,Fee,Fee unit,Address,Label,Amount,Amount unit,Fiat (USD),Other
1773852733,3/18/2026,9:52:13 AM GMT-7,SENT,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX123,0.00001234,BTC,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX123,New FS tx,0.00012345,BTC,"8.81",
1 Timestamp Date Time Type Transaction ID Fee Fee unit Address Label Amount Amount unit Fiat (USD) Other
2 1773852733 3/18/2026 9:52:13 AM GMT-7 SENT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX123 0.00001234 BTC bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX123 New FS tx 0.00012345 BTC 8.81

View File

@@ -36,16 +36,35 @@ source "${DOCKER_FINANCE_CONTAINER_REPO}/src/hledger-flow/lib/lib_preprocess.bas
[ -z "$global_in_filename" ] && exit 1
function reseat_fs()
{
[ -z $1 ] && exit 1
local -r _fs="$1"
local -r _header="Timestamp${_fs}Date${_fs}Time${_fs}Type${_fs}Transaction ID${_fs}Fee${_fs}Fee unit${_fs}Address${_fs}Label${_fs}Amount${_fs}Amount unit${_fs}Fiat (USD)${_fs}Other"
echo "$_header"
}
function parse()
{
lib_preprocess::assert_header "Timestamp;Date;Time;Type;Transaction ID;Fee;Fee unit;Address;Label;Amount;Amount unit;Fiat (USD);Other"
local _gawk=("gawk")
local _fs _header
_header="$(reseat_fs ";")"
if lib_preprocess::test_header "$_header"; then
_fs="FS=;"
else
# Since v25.9.1
_header="$(reseat_fs ",")"
lib_preprocess::assert_header "$_header"
_gawk+=("--csv")
fi
# Get subaccount(s) from filename
local _subaccount
_subaccount="$(echo $global_in_filename | cut -d'_' -f1)"
# NOTE: subaccount (account label) is entered within the app
gawk \
"${_gawk[@]}" \
-v global_year="$global_year" \
-v global_subaccount="$global_subaccount" \
-v subaccount="$_subaccount" \
@@ -64,7 +83,7 @@ function parse()
# skip # Date (N/A)
# skip # Time (N/A)
# Type # TODO: are there more types?
# Type (TODO: are there more types?)
direction=($4 ~ /^RECV$/ ? "IN" : "OUT")
printf $4 OFS
@@ -80,7 +99,19 @@ function parse()
printf("%.8f", $10); printf OFS # Amount # TODO: more than 8 places for Ethereum, etc.?
printf "\"" $11 "\"" OFS # Amount unit
printf "\"" $12 "\"" OFS # Fiat (USD)
# Fiat (USD)
# NOTE: is already quoted since v25.9.1
fiat=$12
if (fiat ~ /^"/)
{
printf fiat OFS
}
else
{
printf "\"" fiat "\"" OFS
}
printf "\"" $13 "\"" OFS # Other
printf direction OFS
@@ -88,7 +119,7 @@ function parse()
printf "\n"
}' FS=\; OFS=, "$global_in_path" >"$global_out_path"
}' "$_fs" OFS=, "$global_in_path" >"$global_out_path"
}
function main()

View File

@@ -2,7 +2,7 @@
# docker-finance | modern accounting for the power-user
#
# Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
# Copyright (C) 2021-2026 Aaron Fiore (Founder, Evergreen Crypto LLC)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -64,9 +64,16 @@ echo -e " \e[32m│ └─\e[37;2m ${global_in_filename}\e[0m"
function lib_preprocess::test_header()
{
local _column="$1"
local _header
_header="$(lib_preprocess::__sanitize_header $2)"
[[ "$_header" =~ (^${_column}$|^${_column},|,${_column},|,${_column}$) ]] && return 0 || return 2
local _delim="$3"
[ -z "$_delim" ] && _delim=","
# TODO: consolidate regexp
[[ "$_header" =~ (^"${_column}"$|^"${_column}${_delim}"|"${_delim}${_column}${_delim}"|"${_delim}${_column}"$) ]] \
&& return 0 || return 2
}
# Assert header in given CSV header