From e66b06ede31f2aa19f1e1e8e934fc824f0a9b5d4 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Tue, 19 Mar 2024 17:11:12 -0700 Subject: [PATCH 1/3] hledger-flow: add support for AdaLite --- .../accounts/adalite/adalite-shared.bash | 79 +++++++++++++++++++ .../accounts/adalite/adalite-shared.rules | 48 +++++++++++ .../adalite/template/adalite-shared.bash | 23 ++++++ .../adalite/template/adalite-shared.rules | 20 +++++ .../1-in/mockup/2022/transactions.csv | 3 + .../1-in/mockup/2023/transactions.csv | 3 + .../1-in/mockup/2024/transactions.csv | 3 + .../subaccount-1/adalite-subaccount-1.rules | 20 +++++ .../template/adalite/subaccount-1/preprocess | 1 + 9 files changed, 200 insertions(+) create mode 100755 container/src/hledger-flow/accounts/adalite/adalite-shared.bash create mode 100644 container/src/hledger-flow/accounts/adalite/adalite-shared.rules create mode 100755 container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash create mode 100644 container/src/hledger-flow/accounts/adalite/template/adalite-shared.rules create mode 100644 container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2022/transactions.csv create mode 100644 container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2023/transactions.csv create mode 100644 container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2024/transactions.csv create mode 100644 container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/adalite-subaccount-1.rules create mode 120000 container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/preprocess diff --git a/container/src/hledger-flow/accounts/adalite/adalite-shared.bash b/container/src/hledger-flow/accounts/adalite/adalite-shared.bash new file mode 100755 index 0000000..e6d10b0 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/adalite-shared.bash @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2024 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# "Libraries" +# + +[ -z "$DOCKER_FINANCE_CONTAINER_REPO" ] && exit 1 +source "${DOCKER_FINANCE_CONTAINER_REPO}/src/hledger-flow/lib/lib_preprocess.bash" "$1" "$2" + +# +# Implementation +# + +[ -z "$global_year" ] && exit 1 +[ -z "$global_subaccount" ] && exit 1 + +[ -z "$global_in_path" ] && exit 1 +[ -z "$global_out_path" ] && exit 1 + +function parse() +{ + lib_preprocess::assert_header "Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency," + + gawk -v global_year="$global_year" -v global_subaccount="$global_subaccount" \ + '{ + if (NR<2 || $1 !~ global_year) + next + + # Format: MM/DD/YYYY HH:MM PM UTC + timestamp=substr($1, 1, 19) # Remove tail ("UTC") + sub(/ /, "Z", timestamp) # Replace first space + sub(/ /, "", timestamp) # Remove remaining space + + # Get/set date format + cmd = "date \"+%F %T %z\" --utc --date="timestamp | getline date + + printf date OFS # Date (timestamp) + printf $2 OFS # Transaction ID + printf $3 OFS # Type + printf $4 OFS # Received from (disclaimer: may not be accurate - first sender address only) + printf $5 OFS # Received amount + printf $6 OFS # Received currency + printf $7 OFS # Sent amount + printf $8 OFS # Sent currency + printf $9 OFS # Fee amount + printf $10 OFS # Fee currency + + printf ($7 ~ /[1-9]/ ? "OUT" : "IN") OFS # Direction + printf global_subaccount + + printf "\n" + }' FS=, OFS=, "$global_in_path" | tac >"$global_out_path" +} + +function main() +{ + parse +} + +main "$@" + +# vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/adalite/adalite-shared.rules b/container/src/hledger-flow/accounts/adalite/adalite-shared.rules new file mode 100644 index 0000000..1fec1b0 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/adalite-shared.rules @@ -0,0 +1,48 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2024 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +fields timestamp,txid,type,from_address,from_amount,from_currency,to_amount,to_currency,fee_amount,fee_currency,direction,subaccount + +date-format %Y-%m-%d %H:%M:%S %z +date %timestamp + +description %timestamp + +comment type:%type, txid:%txid, direction:%direction + +# Default equity transfer +if %direction ^IN$ + account1 assets:adalite:%subaccount:%from_currency + amount %from_amount %from_currency + account2 equity:adalite:%subaccount:withdrawal:%from_currency + +# Default expense +if %direction ^OUT$ + account1 assets:adalite:%subaccount:%to_currency + amount -%to_amount %to_currency + account2 expenses:adalite:%subaccount:%to_currency + +if %direction ^OUT$ +& %fee_amount [1-9] + account3 assets:adalite:%subaccount:%fee_currency + amount3 -%fee_amount %fee_currency + account4 expenses:adalite:%subaccount:fees:%fee_currency + comment type:%type, txid:%txid, direction:%direction, taxed_as:SPEND + comment3 %timestamp,SPEND,adalite,%fee_currency,%fee_amount,USD,,FEE +# Using comment3 so a comment2 SPEND isn't overwritten (when applicable) + +# vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash b/container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash new file mode 100755 index 0000000..373e20d --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2024 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +[ -z "$DOCKER_FINANCE_CONTAINER_REPO" ] && exit 1 +source "${DOCKER_FINANCE_CONTAINER_REPO}/src/hledger-flow/accounts/adalite/adalite-shared.bash" + +# vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite-shared.rules b/container/src/hledger-flow/accounts/adalite/template/adalite-shared.rules new file mode 100644 index 0000000..0aa27dd --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite-shared.rules @@ -0,0 +1,20 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2024 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +include ../../../../../src/accounts/adalite/adalite-shared.rules + +# vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2022/transactions.csv b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2022/transactions.csv new file mode 100644 index 0000000..dc019c3 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2022/transactions.csv @@ -0,0 +1,3 @@ +Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency, +02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA, +02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,, diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2023/transactions.csv b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2023/transactions.csv new file mode 100644 index 0000000..dc019c3 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2023/transactions.csv @@ -0,0 +1,3 @@ +Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency, +02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA, +02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,, diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2024/transactions.csv b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2024/transactions.csv new file mode 100644 index 0000000..dc019c3 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/1-in/mockup/2024/transactions.csv @@ -0,0 +1,3 @@ +Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency, +02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA, +02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,, diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/adalite-subaccount-1.rules b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/adalite-subaccount-1.rules new file mode 100644 index 0000000..c9f0fb9 --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/adalite-subaccount-1.rules @@ -0,0 +1,20 @@ +# docker-finance | modern accounting for the power-user +# +# Copyright (C) 2024 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +include ../../adalite-shared.rules + +# vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/preprocess b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/preprocess new file mode 120000 index 0000000..ce1912e --- /dev/null +++ b/container/src/hledger-flow/accounts/adalite/template/adalite/subaccount-1/preprocess @@ -0,0 +1 @@ +../../adalite-shared.bash \ No newline at end of file From d2b40ec4c319d567d4b5d134c5a53cbcabb52db5 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Tue, 19 Mar 2024 21:46:08 -0700 Subject: [PATCH 2/3] client: fetch.yaml.in: add cardano/ADA --- client/docker-finance.d/container/fetch/fetch.yaml.in | 1 + 1 file changed, 1 insertion(+) diff --git a/client/docker-finance.d/container/fetch/fetch.yaml.in b/client/docker-finance.d/container/fetch/fetch.yaml.in index 32d7fdc..eec1185 100644 --- a/client/docker-finance.d/container/fetch/fetch.yaml.in +++ b/client/docker-finance.d/container/fetch/fetch.yaml.in @@ -56,6 +56,7 @@ version: @DOCKER_FINANCE_VERSION@ - "autonolas/OLAS" - "binance-usd/BUSD" - "bitcoin/BTC" + - "cardano/ADA" - "ethereum/ETH" - "gemini-dollar/GUSD" - "litecoin/LTC" From 0b814ebf1caa56022dcc1ec12f6aa02c6b15c2ca Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Tue, 19 Mar 2024 21:48:02 -0700 Subject: [PATCH 3/3] README: add support for AdaLite --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eee3dfa..013fcab 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ However, for accounts that require fetch/import functionality, only the followin #### Blockchain explorers / Ecosystems -Supported blockchains (independent of hardware/software wallet type): +Supported blockchains (independent of wallet type): - [X] [Algorand](https://algorand.com/) *(powered by [AlgoNode.io](https://algonode.io/))* - [ ] Cardano @@ -203,6 +203,10 @@ Supported blockchains (independent of hardware/software wallet type): - [X] [Ledger](https://www.ledger.com/) - [X] [Trezor](https://trezor.io/) +##### *Web* + +- [X] [AdaLite](https://adalite.io) + ### TradFi #### Regularly maintained