Commit Graph

712 Commits

Author SHA1 Message Date
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
e8374a6c1f Merge pull request #252 into master
7b819703 container: root: test: unit: add pluggable cases (Aaron Fiore)
29574ca7 container: plugins: root: rewrite example plugin (Aaron Fiore)
8055a949 container: root: new pluggable framework (Aaron Fiore)
2025-12-17 12:59:13 -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
8a3b44d727 Merge pull request #251 into master
c7fcebfe client: Dockerfiles: remote: root: update multi-stage (Aaron Fiore)
2025-12-10 13:05:00 -08:00
c7fcebfe0b client: Dockerfiles: remote: root: update multi-stage
Parses out build stage into separate build target.
2025-12-10 12:43:53 -08:00
70417cc889 Merge pull request #250 into master
f669c01f client: Dockerfiles: remote: hledger-suite: use multi-stage (Aaron Fiore)
a88dbf57 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.51.1 (Aaron Fiore)
2025-12-10 12:00:40 -08:00
f669c01f97 client: Dockerfiles: remote: hledger-suite: use multi-stage
The previous hledger-suite image was treated as a monolithic development
image that was never intended to be pulled from directly, at least
outside of the `dfi` build system.

hledger-suite has now been parsed out into separate build targets for
faster maintenance and development, with the final production image
being a massively slimmer "placeholder" image for the built binaries.

`hledger-suite:latest` can now be pulled from directly without pulling
the entire build system and related artifacts.
2025-12-10 11:56:43 -08:00
a88dbf5704 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.51.1 2025-12-10 09:35:24 -08:00
14f34e7631 Merge pull request #249 into master
7ca01776 container: root: refactor using common utility (Aaron Fiore)
d156f62f container: root: common: utility: refactor/add tests (Aaron Fiore)
ea204131 container: root: common: utility: refactor/deprecate, add/enhance free functions (Aaron Fiore)
2025-12-09 15:13:56 -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
ee82e6852f Merge pull request #248 into master
a84c404c container: root: internal: fix calling base CRTP template functions (Aaron Fiore)
2025-12-01 16:30:04 -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
6cb8be88d5 Merge pull request #247 into master
5e45f307 client: Dockerfiles: local: root: package updates (Aaron Fiore)
70be50b0 client: Dockerfiles: remote: root: use multi-stage (Aaron Fiore)
8816d5fd client: Dockerfiles: remote: root: bump to 6.38.00 (Aaron Fiore)
2025-12-01 15:00:39 -08:00
5e45f307ad client: Dockerfiles: local: root: package updates
- Prevents system upgrades from using Arch's `root` package
  * Currently, their package does not build with C++20 support

- Updates remote image package artifact location
  * Remote image's build artifact moved from /home/builder to /root

- Uses wildcard for local `root` package version
  * Reduces maintenance since any remote bump should rebuild this module
2025-12-01 14:59:11 -08:00
70be50b0d4 client: Dockerfiles: remote: root: use multi-stage
A single development stage ended up not being needed.

NOTE: `dfi` will still only pull the package artifact from the final image.
2025-12-01 14:58:58 -08:00
8816d5fd17 client: Dockerfiles: remote: root: bump to 6.38.00 2025-12-01 09:24:30 -08:00
34b200d46f Merge pull request #246 into master
221a5f70 client: docker: add `exec` wrapper, update completion (Aaron Fiore)
2025-11-26 10:48:49 -08:00
221a5f7049 client: docker: add exec wrapper, update completion 2025-11-25 15:51:05 -08:00
a75f8add47 Merge pull request #245 into master
8eb03f6d container: root: rootlogon: update the help process (Aaron Fiore)
9fec1b42 container: root: change base path, related refactor (Aaron Fiore)
273f2cef container: root: internal: update TODO re: c++23 (Aaron Fiore)
2025-11-24 10:58:51 -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
4780f79716 Merge pull request #244 into master
9faebb6c container: plugins: root: fix example3()'s usage of throw handler (Aaron Fiore)
ca591691 container: root: rewrite throw handler, refactor using common types (Aaron Fiore)
fa91fd02 container: root: factor out internal types to common (Aaron Fiore)
2025-11-21 11:22: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
fa417f5d01 Merge pull request #243 into master
cf68f02d container: root: test: utility: add tests for common (Aaron Fiore)
0d4b293b client/container: root: refactor common namespace (Aaron Fiore)
2025-11-19 13:42:20 -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
5bcc17380b Merge pull request #242 into master
31cc3202 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.50.3 (Aaron Fiore)
2025-11-18 19:20:34 -08:00
31cc320298 client: Dockerfiles: remote: hledger-suite: bump hledger to 1.50.3 2025-11-18 19:13:44 -08:00
e8e3aa11fa Merge pull request #241 into master
8c76e7cc container: root: macro: common: throw if invalid loading path (Aaron Fiore)
2025-11-14 13:24:10 -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
1c352f278b Merge pull request #240 into master
8bd51fed client: Dockerfiles: remote: root: add PACKAGER to makepkg (Aaron Fiore)
cf3eccd5 client: Dockerfiles: remote: root: remove more GUI opts (Aaron Fiore)
2025-11-14 13:17:21 -08:00
8bd51fed65 client: Dockerfiles: remote: root: add PACKAGER to makepkg
When querying with pacman, provides clearer information instead of
"Unknown Packager".
2025-11-13 14:07:53 -08:00
cf3eccd52b client: Dockerfiles: remote: root: remove more GUI opts
These are currently not needed. Improves build time and package size.
2025-11-13 13:52:13 -08:00
dcc165f0b3 Merge pull request #238 into master
8b59cee8 client/container: root: migrate to Botan3 (Aaron Fiore)
2025-11-11 14:42:28 -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
2d58c9ef29 Merge pull request #237 into master
78ee492c client: Dockerfiles: local: root: use evergreencrypto/root image (Aaron Fiore)
7b67bcf1 client: Dockerfiles: remote: root: add evergreencrypto/root image (Aaron Fiore)
2025-11-07 12:58:13 -08:00
78ee492c46 client: Dockerfiles: local: root: use evergreencrypto/root image
- Provides C++20 support and a slimmer package (~18% smaller)
- Required for issue #23 (bitcoin-core lib support)
2025-11-06 16:22:40 -08:00
7b67bcf115 client: Dockerfiles: remote: root: add evergreencrypto/root image
Provides C++20 support and a slimmer package (~18% smaller).
2025-11-06 16:22:40 -08:00
9bcdc6d786 Merge pull request #235 into master
12e6d139 CHANGELOG: add 1.0.0 (Aaron Fiore)
3215d324 client: manifest: bump version to v1.0.0 (Aaron Fiore)
v1.0.0
2025-10-31 13:52:04 -07:00
12e6d13939 CHANGELOG: add 1.0.0 2025-10-30 16:46:18 -07:00