Commit Graph

61 Commits

Author SHA1 Message Date
3f7e8569fe container: fetch: coinbase: reinstate sort (remove pessimization)
Without this sort, transactions will not actually be written...
2025-01-08 20:51:33 -08:00
95c7212a3d container: fetch: coinbase: remove sort (optimize)
Received transactions are already sorted.
2025-01-07 20:44:48 -08:00
80039297a3 container: fetch: coinbase: fix/update pagination
- Don't break before advancing 'starting_after' cursor
  * Only save given year instead of breaking when not given year

- The 'next_starting_after' cursor now exists within 'info' object
2025-01-07 18:03:13 -08:00
9034346426 container: fetch: remove bittrex 2025-01-04 01:16:05 -08:00
c7ba59cfa1 container: lib_fetch: remove bittrex 2025-01-04 01:16:05 -08:00
f7cf8ca960 container: fetch: remove coinbase-pro 2025-01-04 01:16:05 -08:00
ae3caef110 container: lib_fetch: remove coinbase-pro 2025-01-04 01:16:04 -08:00
58e860dd94 container: fetch: remove celsius 2025-01-04 01:16:02 -08:00
d8a1b4cff1 container: lib_fetch: remove celsius 2025-01-04 01:15:59 -08:00
2b3b09dafa container: lib_taxes: add support for IRS Rev. Proc. 2024-28
- Creates per-wallet / per-account compliance for IRS Rev. Proc. 2024-28

  * Obfuscated keymap now creates a unique indentifier per-wallet /
    per-account where all trades, spends and income are now clearly
    tied to their respective wallets / accounts.

- Removes support for anonymized ("universal pool") reports.
2025-01-02 20:30:32 -08:00
a29426b910 container: finance: lib_hledger: remove -w from hledger-ui
Workaround for "hledger-ui: user error (Error: couldn't start native file manager: fdType: unsupported operation (unknown file type))"
2024-12-12 23:38:05 -08:00
ceaca332dd container: src: fetch: gemini: add debug logging 2024-10-08 19:05:40 -07:00
249ebe03d6 container: lib_edit: add hledger 'add' command 2024-10-01 19:38:35 -07:00
01197a2818 client/container: implement debug log-levels
DOCKER_FINANCE_DEBUG will now support the following:

0 = no debug output
1 = `print_debug` (bash/PHP)
2 = level 1 + `set -xv` (bash)
2024-09-26 18:38:36 -07:00
8a1f653127 Merge pull request #146 into master
fd23a93 container: src: lib_edit: add 'subscript' to case (Aaron Fiore)
2024-09-24 18:30:35 -07:00
5acbbfb799 container: src: lib_hledger: remove hledger version test
No longer needed because 1.40 is the minimum version provided by the
current build (courtesty of repo 'Dockerfiles/remote/hledger-suite').
2024-09-24 18:12:47 -07:00
da8488ebb0 container: src: lib_hledger: fork hledger-web, log print
Gives more convenient shell control for end-user.
2024-09-24 18:06:04 -07:00
8a8395e844 container: src: lib_hledger: pass hledger-{ui,web} args
These are currently within the subscript but should be a part of the
baseline command.
2024-09-24 18:06:04 -07:00
fd23a93b0b container: src: lib_edit: add 'subscript' to case
'shell' is the equivalent of 'subscript' (but 'subscript' was missing).
2024-09-24 00:31:01 -07:00
ea392ec360 container: remove ledger in place of hledger
As said before; `lib_ledger` was meant to be a general abstraction to
any underlying CLI ledger.

But, between C++ `ledger` and Ledger Hardware Wallet, this abstraction
has become too confusing and counterproductive.

Since `hledger` will be the underlying implementation for the forseeable
future, all doubt should now be removed.
2024-09-23 18:09:40 -07:00
1101fc81b4 container: rename lib_ledger to lib_hledger
As said before; `lib_ledger` was meant to be a general abstraction to
any underlying CLI ledger.

But, between C++ `ledger` and Ledger Hardware Wallet, this abstraction
has become too confusing and counterproductive.

Since `hledger` will be the underlying implementation for the forseeable
future, all doubt should now be removed.
2024-09-23 18:09:33 -07:00
52270ba0b3 container: rename $global_conf_shell -> $global_conf_subscript
Provides clarity, avoids confusion.
2024-09-23 17:31:11 -07:00
0b2c76a813 container: finance: add dependency checks for modules
Since modules are included upon build type, if a build doesn't support
a feature then that feature's dependencies will not be available.

This commit will give notice of those missing dependencies.
2024-09-17 20:06:34 -07:00
7c46719ab1 container: finance: lib_fetch: fix Tor plugin (proxychains) check
This ensures that curl will only be executed if the Tor plugin
(proxychains) argument is enabled.
2024-09-16 21:10:49 -07:00
cff19f87d9 container: fetch: run linter 2024-09-07 18:59:04 -07:00
520be13464 container: finance: lib_plugins: allow path depth
- Allows plugins to function within subdirectories
- Removes redundant arg checking
2024-09-04 18:16:08 -07:00
29d2921dd8 container: lib_fetch: fix price parsing
- Fix check if price API is not set
- Fix check for invalid asset sequence
- Improve log messages
2024-08-21 20:21:28 -07:00
29cc6f615e container: fetch: price: refactor empty key type
Needed for bash lib_fetch's use of `yq`.
2024-08-17 23:19:57 -07:00
a3b889052b container: lib_fetch: refactor to use yq
Replaces `shyaml` dependency with `yq`.
2024-08-17 23:19:57 -07:00
77a8b21893 container: lib_fetch: implement Tor support
- Adds 'tor' option
- Uses `proxychains-ng`
- Expects docker-finance's Tor plugin
2024-08-15 21:31:54 -07:00
a1d02016f3 container: lib_plugins: add plugins type support
- Adds plugin type support
  * Adds pseudo-paths to help usage
  * Adds arg parsing of given plugin name
    - Prepended pseudo-paths will use repo or custom plugin
2024-08-12 18:36:26 -07:00
5eac855acf container: bash: add times / lib_times 2024-08-09 18:03:31 -07:00
a4f9b401d3 container: bash: add plugins support / lib_plugins
- Executes plugins within profile/subprofile context
  * Hooks into the container's global environment
2024-08-08 16:08:49 -07:00
d7b25e0dae php: fetch: prices: base: catch unrecoverable CoinGecko error
Thrown when 'all' years are requested without paid-plan API key.
2024-07-30 22:54:04 -07:00
f222a5e654 php: fetch: prices: crypto: throw errors with nested status 2024-07-30 22:47:57 -07:00
5609704b25 bash: lib_fetch: create prices dir if nonexistent 2024-07-30 19:02:26 -07:00
6d119df31b container: lib_taxes: cost-basis work-around for bitcoin.tax
Issue #51 describes at least a few undocumented bitcoin.tax issues:

  - Bicoin.tax gives unexpected cost-basis results when `Fee` is given
    with `Total` (when `Total` is given in place of `Price`). The
    expectation is that bitcoin.tax will perform the cost-basis
    calculation on `Total` when `Fee` is also given.

    However, bitcoin.tax *will* give expected cost-basis results if
    `Price` is given in place of `Total` (with `Fee` also given) *or* if
    `Total` is given *after* local cost-basis adjustments are made (but
    *without* `Fee` given).

    The rationale for why docker-finance doesn't use `Price`:

      * docker-finance has all of the `Total`s; so `Price` isn't
        necessary.

      * Local price information isn't available for most trades (and
        shouldn't be necessary since all `Total`s are available).

  - Additionally, when `Fee` is non-fiat (crypto), it now must be marked
    as a SPEND in order to be disposed (and to produce an accurate
    closing report).

  - Finally, if `FeeCurrency` *does* not match either `Symbol` or
    `Currency` (e.g., BTC-ETH w/ BNB fee), it's unknown if cost-basis
    must be calculated locally as well (if `Total` is given). Local
    calculations cannot be done because `Fee` price information is
    (almost certainly) not available for this type of trade.

Until upstream can assert that attaching the `Fee` will subsequently
adjust the cost-basis of `Total` *and* dispose of the `Fee` in the
process (while also allowing `Total` to be used in place of `Price`),
the `Fee` (and `FeeCurrency`) column(s) must not be populated and values
instead moved to SPEND (as described above).

Upstream is aware of these issues (since May) and they're in the process
of resolution. In the meantime, docker-finance work-arounds should
suffice for all trades that have a fiat `Fee` and/or a
`Fee`/`FeeCurrency` that matches one side of the trading pair.
2024-07-27 00:20:22 -07:00
b4bae82ae7 container: lib_edit: refactor for clearer fatal errors
- Make known that non-zero returns are fatal errors
- Return success on success (iadd | manual)
- Add iadd to `edit` usage help
- Remove outdated comments
2024-07-11 15:42:23 -07:00
190ac2864d container: lib_ledger: refactor for base arguments
- Future-proof for hledger features
- Related refactoring
2024-07-08 18:13:34 -07:00
b0bc67deb1 container: lib_ledger: use PATH for hledger{-ui,-web,-flow} 2024-07-08 18:13:34 -07:00
f7d1542b32 container: lib_edit: create if not found, refactor 2024-07-08 18:13:34 -07:00
adebadbaa9 container: lib_edit: add hledger conf support 2024-07-08 18:13:34 -07:00
2d3ab7857c php: coinbase: use ccxt end-user public-facing API
A recent combination of Coinbase and ccxt changes will now result in
authentication errors (server error 401) because of docker-finance's
coinbase implementation (specifically, direct calls to internal ccxt).

docker-finance's previous usage of request() meant hooking into the
underlying ccxt API and not the end-user public-facing API (publicly
documented - not necessarily the "public" vs "private" APIs provided by
exchanges, as seen in ccxt documentation).

This direct usage of request() was obviously never recommended but it
was always easier to interact with to get to the underlying raw object
(at least at the time of original docker-finance coinbase writing).

Since it appears that ccxt has refactored the authentication mechanism
related to request(), this commit also refactors in order to provide a
working fix for authentication.
2024-07-03 19:05:39 -07:00
369e2343ce client/container: bash: trivial impl for ledger-vui
Leverages journal to visidata for an alternative read-only terminal UI.
2024-06-24 16:59:37 -07:00
a461cda2ff container: bash: lib_edit: add iadd
Upstream will still need to add comment/metadata functionality to iadd.
2024-06-24 16:59:37 -07:00
c68c25dba4 php: fetch: gemini: update to ccxt's latest request() signature
The context argument was removed from upstream's signature.
2024-06-21 21:12:04 -07:00
0014440e38 php: fetch: run linter 2024-06-21 21:11:48 -07:00
a9d4afd1df bash: lib_fetch: prices: CLI: allow multiple APIs
- Fetch from all available price APIs within a single command
  * allows passing multiple CLI APIs to `api` argument
  * will now fetch from all available APIs if `api` is not given
  * will warn if API config block is missing or die of no APIs are found
- Related refactoring
2024-06-18 18:59:42 -07:00
cb7eb80cb5 php: fetch: prices: crypto: use inherited doxygen 2024-06-17 23:15:23 -07:00
c8fde5ad64 bash: lib_fetch: refactor 'symbol' as 'asset' or 'ticker'
Clarity through specificity.
2024-06-17 23:15:23 -07:00