# apollo-config

## Description

apollo-config is a flexible and powerful layered configuration system designed specifically for Apollo, a Starknet node. This system allows you to easily manage configurations for your Apollo sequencer by leveraging various sources and providing additional helpful features.

## Configuration sources

Supports multiple configuration sources in ascending order of overriding priority:

- Default values
- Configuration files (from first to last)
- Environment variables
- Command-line arguments

## Additional features

- **Support for Nested Configuration Components:** Organize your configurations into nested components, making it easy to manage complex settings for different aspects of the application.

- **Usage of Pointers:** Use pointers to merge parameters that are common to multiple components. This capability helps in streamlining configurations and avoiding duplication of settings.

- **Automatically-Generated Command Line Parser:** To simplify the process of handling command-line arguments, the system automatically generates a command-line parser. This means you don't have to write complex argument parsing code; it's ready to use out-of-the-box.

- **Automatically-Generated Reference Configuration File:** Makes it easier for users by generating a reference configuration file. This file serves as a template that highlights all available configuration options and their default values, enabling users to customize their configurations efficiently.

## Documentation

Developer reference documentation is available at https://docs.rs/apollo_config/. The documentation on this site is updated periodically.

To view the most up-to-date documentation, enter the following command at the root directory of the project:

```shell
cargo doc --open -p apollo_config
```
