289 Commits

Author SHA1 Message Date
321751d009 container: root: common: add cppcheck-suppress stlIfStrFind
`basic_string::starts_with()` is not applicable and breaks functionality
2026-02-05 17:29:27 -08:00
a1a08495ff container: lib_fetch: return the value of executor 2026-02-04 10:48:04 -08:00
9e88c67910 container: hledger-flow: coinomi: add chains to template
These chains have been supported and provided by the default generated
`fetch` config for coinomi but they were not included during default
coinomi template generation.
2026-02-03 16:33:27 -08:00
a4b73cfe43 container: root: common: allow quotations in Pluggable arguments
Helps facilitate CLI usage; e.g.,

$ dfi testprofile/testuser root plugins/repo/bitcoin/bitcoin.cc 'dfi::macro::load(\"repo/test/unit.C\")'
2026-01-29 10:03:50 -08:00
bd6e3c2ff7 container: lib_hledger: make error fatal if hledger-web cannot start
Needed for CI.
2026-01-28 11:26:15 -08:00
1c6b449318 container: lib_hledger: only feed visidata on valid hledger command 2026-01-28 11:26:08 -08:00
5e8fff8103 container: lib_taxes: fix for generating all years (year=all)
- The expected `hledger` output format appears to have changed, likely
  from a recent `hledger` release (confirmed to be unrelated to `xan`).

- This bug does *not* affect individual year tax report generation, when
  given a specific (or default) year.
2026-01-28 11:22:15 -08:00
f7cefedd96 container: lib_finance: allow non-root system user; print warning
Needed for CI.
2026-01-28 11:16:34 -08:00
bf235ee526 container: finance: fetch: prices: add User-Agent
CoinGecko now returns error 403 without a "descriptive" User-Agent
2026-01-15 10:16:37 -08:00
eb7f97a054 container: finance: fetch: add API_VERSION to env 2026-01-14 16:49:46 -08:00
713514bbca container: finance: lib_root: rename Example class
For clarity that this class is separate from plugin's entrypoint.
2026-01-09 15:38:21 -08:00
ad5f128a34 container: root: test: unit: utility: rename Example class
For clarity that this class is separate from plugin's entrypoint.
2026-01-09 15:38:17 -08:00
6e7fee92f3 container: plugins: root: example: rename Example class
For clarity that this class is separate from plugin's entrypoint.
2026-01-09 15:38:13 -08:00
abc08d4bc1 container: plugins: root: mark Pluggable entrypoints as final 2026-01-09 15:36:10 -08:00
07d3bbc41f container: root: macro: web: internal: fix Crypto++ canvas
ROOT apparently no longer likes ++ in canvas title (thus, not rendering)
2026-01-09 11:59:12 -08:00
07fe396356 container: root: test: unit: utility: add/update macro cases 2026-01-09 11:45:21 -08:00
a937ebe565 container: root: macros: add Pluggable support
- Adds requirements to support auto-(un)load'ing, refactors

- Adds loader argument to unit tests and benchmarks
  * Filters can now be passed as a loader argument

- Adds loader argument to Hash macro
  * Factored out from shell caller
2026-01-09 11:45:21 -08:00
e77c25f0c9 container: finance: lib_root/completion: add Pluggable support
- Adds Pluggable auto-(un)load support
- Adds plugin dispatcher for interpreter
- Refactors to support new Pluggable system
- Updates usage help and improves documentation
2026-01-09 11:45:21 -08:00
2a6504f872 container: root: macro: common: utility: add Pluggable support 2026-01-09 11:45:21 -08:00
3e88caaa99 container: root: test: unit: utility: add PluggableSpace entrypoint 2026-01-09 10:54:54 -08:00
572ee3cf7d container: root: test: unit: type: add PluggableSpace entrypoint 2026-01-08 15:59:49 -08:00
1adb305417 container: plugins: root: bitcoin: support Pluggable entrypoint 2026-01-08 15:59:49 -08:00
31054b86ea container: plugins: root: example: support Pluggable entrypoint 2026-01-08 15:59:49 -08:00
8a277485ba container: root: plugin: common: add PluggableSpace entrypoint 2026-01-08 15:30:35 -08:00
cf5c2c4baa container: root: common: utility: add PluggableSpace entrypoint 2026-01-08 14:47:09 -08:00
1f0b8e914e container: root: common: type: add PluggableSpace entrypoint 2026-01-08 14:46:52 -08:00
f407ce3811 container: hledger-flow: discover: credit: remove comma(s) from description 2026-01-06 16:59:49 -08:00
6a7087f175 container: root: test: unit: common: PluggableSpace: add case for conversions 2026-01-05 13:06:54 -08:00
ce12412d10 container: root: common: PluggableSpace: add character checks/conversions 2026-01-05 13:06:54 -08:00
736a71e9d1 container: root: test: unit: common: PluggablePath: add case for invalid characters 2026-01-05 13:06:54 -08:00
8bc6477c27 container: root: common: PluggablePath: add checks for invalid characters 2026-01-05 13:06:54 -08:00
d2ff942fa0 container: root: test: unit: common: PluggablePath: update/add case for invalid family 2026-01-05 13:06:54 -08:00
b775992d63 container: root: common: PluggablePath: expand parent path, refactor 2026-01-05 13:06:54 -08:00
c3d128ea62 container: root: test: benchmark/unit: add bitcoin plugin support
- Adds test cases and benchmark for bitcoin's RNG via `dfi`'s `Random`
  * Currently only supports one of bitcoin's RNG's (`FastRandomContext`)
2025-12-18 16:20:38 -08:00
0bf4c359b1 container: root: macro: add bitcoin plugin support
- Adds support to existing macros for bitcoin's RNG via `dfi`'s `Random`
  * Currently only supports one of bitcoin's RNG's (`FastRandomContext`)
2025-12-18 16:20:38 -08:00
2268ae8083 container: root: src: add bitcoin plugin support
- Adds bitcoin plugin support to `Random` specialization/implementation
  * Currently only supports one of bitcoin's RNG's (`FastRandomContext`)
2025-12-18 16:20:38 -08:00
8d6a796022 container: plugins: root: add bitcoin plugin
Utilizes `libbitcoinkernel` for symbols and headers but also pulls from
non-kernel headers as needed (since current kernel design is a WIP).

See the code documentation in this commit for details.
2025-12-18 16:20:38 -08:00
a609e4d936 container: plugins: root: update example plugin
`dfi` API headers must be managed on an as-needed basis.
2025-12-17 17:04:41 -08:00
a54c7f25a5 container: root: add getter for dfi's root path
Adds impl/test for getting absolute path to all `dfi`'s `root` code.
2025-12-17 17:04:40 -08:00
6f415bd847 container: root: remove loading dfi src API headers by default
Because of the nature of the interpreter, these headers should be
loaded/unloaded on an as-needed basis.

This commit is particularly useful for pluggables in that, if the
pluggable requires that the `dfi` API (or API-related implementations)
have certain preprocessor requisites fulfilled for the pluggable, the
API can now be compiled *after* the pluggable has been loaded but also
*before* the pluggable *requires* the use of the API (or API-related).

In other words, without this commit, a pluggable's `#define`s will be
useless *after* the API (or API-related implementations) is loaded and
compiled (at least not without an API reload, but that is not needed).

NOTE: this change does not affect `dfi`'s pluggable auto-(un|re)loading,
as the pluggable will have already been loaded prior to any other `dfi`
API compiling.
2025-12-17 17:04:34 -08:00
0c35fe1edd container: root: refactor scope for internal/common types
Avoid programmer/compiler confusion for internal/common types.
2025-12-17 16:38:52 -08:00
7b81970330 container: root: test: unit: add pluggable cases
Focuses on base pluggables, pluggable data types and functionality.
2025-12-16 17:13:06 -08:00
29574ca74d container: plugins: root: rewrite example plugin
- Reorganizes to utilize new pluggable framework
- Refactors, adds/updates documentation
2025-12-16 17:13:06 -08:00
8055a9494f container: root: new pluggable framework
- Implements pluggable auto-(un|re)loading
- Refactors, adds/updates documentation
2025-12-16 17:13:06 -08:00
7ca01776fc container: root: refactor using common utility 2025-12-09 15:09:51 -08:00
d156f62fa7 container: root: common: utility: refactor/add tests 2025-12-09 15:09:51 -08:00
ea20413107 container: root: common: utility: refactor/deprecate, add/enhance free functions
- Factors out (and deprecates) `Command`
- Deprecates certain free functions
- Adds better error handling
- Adds more free functions
- Refactors file handling
- Improves documentation

Notes on file loading (and general file handlers):

The interpreter command `.L` will load files but appears to not fail if
the file isn't source code or a library.

Calling `gSystem->Load()` will load a given library but not source file,
and appears to not accept paths (which will be needed for pluggables).

Because `gInterpreter->LoadFile("path")` will load either a source file
or library by given "path", and is consistent with `dfi`'s approach to
path handling, this function appears to be the winner (for now).
2025-12-09 15:09:51 -08:00
a84c404c5b container: root: internal: fix calling base CRTP template functions
ROOT 6.38.00 brings LLVM 20 which errors (or ROOT's Cling errors) when
calling certain base CRTP template functions without a `this` pointer.

Resolves:

  "error: call to non-static member function without an object argument"

NOTE: RandomImpl is not currently affected but is refactored for consistency.
2025-12-01 16:23:42 -08:00
8eb03f6d95 container: root: rootlogon: update the help process
- Less noisy, less intrusive, more helpful
- Will allow for isolating usage help on a per-namespace level
2025-11-21 17:32:38 -08:00
9fec1b427c container: root: change base path, related refactor
The base path is now *outside* of the macro directory; allowing for a
more integrated view of `dfi`'s entire `root` system. This is more
apparent once running an interactive session where the expectation is
(more intuitively) that any path should be relative to 'src/root' and
not 'src/root/macro'.

The rationale for why this was in 'src/root/macro' to begin with stems
from how `root` (by default) will automatically load rootlogon.C in the
directory that `root` is started. This is causing more confusion than
not because `dfi`'s usage of `root` is not limited to macros.

These changes skirt the line between needing a major API bump and not
but, so far, appears to be on the side of *not*. However, the TODOs
noted for macro loading should be addressed prior to any API changes.
2025-11-21 17:32:25 -08:00