Commit Graph

281 Commits

Author SHA1 Message Date
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
273f2cef49 container: root: internal: update TODO re: c++23 2025-11-21 11:28:14 -08:00
9faebb6cea container: plugins: root: fix example3()'s usage of throw handler
The old macros should *not* have been used in any example; as they
were intended for internal use only.

This was noted in Doxygen ...by not noting them as publicly consumable.
2025-11-21 11:15:58 -08:00
ca59169116 container: root: rewrite throw handler, refactor using common types
- Refactor using common types that were once internal
- Removes ancient macro approaches to C++20 solutions
- Changes `Exception` message type to use std::string
  * std::string_view isn't worthwhile in this context
2025-11-21 11:15:58 -08:00
fa91fd02e8 container: root: factor out internal types to common
These types and handlers are too generic to be kept internal only.

They can now be used across all root macros, plugins and overall API.
2025-11-20 17:44:32 -08:00
cf68f02d2f container: root: test: utility: add tests for common 2025-11-19 13:23:52 -08:00
0d4b293b2d client/container: root: refactor common namespace
- Factor out respective common from macro and apply to all scopes
  * `dfi::common`
  * `dfi::macro::common`
  * `dfi::plugin::common`

- Add deprecation warnings in `dfi::macro::common`
  * Common functionality (not macro specific) is now in `dfi::common`

- Add convenience wrappers to inner common impl, where appropriate
  * Allows for backwards compatibility

- Add/update/clarify code docs and Doxygen definitions

- Related refactoring

NOTE: all changes are backward compatible (no need to bump major).
2025-11-19 13:23:52 -08:00
8c76e7cc11 container: root: macro: common: throw if invalid loading path
- Fixes silent failure when attempting to load non-existent/invalid path
- Applies to any macro, plugin or path that's loaded through this class
2025-11-14 13:19:09 -08:00
8b59cee84c client/container: root: migrate to Botan3
- This is possible now that `dfi`'s ROOT build supports C++20
- No internal `dfi` API or impl changes are necessary
  * This includes any Botan signatures
2025-11-07 13:13:53 -08:00