...
- Parse, validate and load arguments
- this will only check for validity of single arguments e.g type checking/enum checking
- the end config result should be the same no matter what process you use e.g env variable vs toml etc.
- Instantiate all exposed Plugin Services (e.g StorageService etc)
- currently, some services are not registered until after things have been created e.g BesuEvents this should be our problem not the plugin developers problem.
- Register all Plugins
- Validate Configuration combinations
- Instantiate Besu
- Run Besu
Code
Breaking changes POC for loading cli options - I think this offers better integration and understanding of what's going on but at the cost of being a breaking change. It also has less flexibility and is means that cli options are 'special'.
https://github.com/hyperledger/besu/pull/2768
Another option could be to introduce another method that would be called before BesuPlugin::register (and parse in besu) that would be specifically for registering cli options.