Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(code): Allow applications to define their own configuration type #872

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

romac
Copy link
Member

@romac romac commented Feb 24, 2025

Closes: #852

This PR removes the global malachite_config::Config struct and instead lets applications define their own configuration type with only the settings they need, which can include some of the settings provided by malachite_config, e.g. ConsensusConfig, DiscoveryConfig, etc. Some of those are required, and are captured by the new NodeConfig trait. This also enables applications to pick a configuration format other than TOML.

To this end, the Node trait gains an additional abstract type member, Node::Config, to be instantiated with the concrete configuration type.

Most of the complexity in this PR was to adapt the CLI and the test framework to deal with the new abstract configuration type defined by the application via the Node trait instead of working with a concrete Config type.


PR author checklist

For all contributors

For external contributors

Copy link

codecov bot commented Feb 24, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 81.99%. Comparing base (ad7350e) to head (25241b6).

✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #872      +/-   ##
==========================================
- Coverage   82.64%   81.99%   -0.65%     
==========================================
  Files         187      189       +2     
  Lines       16088    16150      +62     
==========================================
- Hits        13295    13242      -53     
- Misses       2793     2908     +115     
Flag Coverage Δ
integration 81.86% <ø> (-0.65%) ⬇️
mbt 8.30% <ø> (-0.13%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
core ∅ <ø> (∅)
engine ∅ <ø> (∅)
app ∅ <ø> (∅)
starknet ∅ <ø> (∅)

@romac romac changed the title feat(code): Applications now define their own configuration feat(code): Allow applications to define their own configuration type Feb 25, 2025
@romac romac added the work in progress Work in progress label Feb 25, 2025
@romac romac removed the work in progress Work in progress label Feb 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

code: Let applications define their own config instead of relying on malachite_config::Config
1 participant