BrendonButler / BrendonButler/entropy
[Feature] Implement Configuration Management System
- Dominant language
- Java
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
### Description of the Feature
Implement a flexible configuration management system for loading, merging, and accessing application settings from multiple file formats (YAML, HOCON, JSON, etc.). Provide compile-time conversion of developer-friendly formats (YAML/HOCON) into efficient JSON, while still allowing for runtime parsing of any supported format and on-the-fly conversions. Expose a central `ConfigManager` API for retrieving strongly-typed configuration values, with support for default values, user overrides, and environment-specific sources.
### Benefits of the Feature
- Human-readable and editable configuration files (YAML/HOCON/JSON) for development
- Efficient JSON representations for optimized runtime performance
- Out-of-the-box support for multiple config formats with seamless conversions
- Centralized handling of default, system-level, user-level, and environment variables
- Strongly-typed access to configuration values with built-in validation
- Modular config sections per engine subsystem (rendering, audio, input, UI, etc.)
- Enables hot-reloading or dynamic updates of configuration at runtime
- Simplifies build pipelines via integration with compile-time conversion plugin
### Additional Information
Package: `net.sparkzz.entropy.config`
Core types: `ConfigManager`, `ConfigSource`, `ConfigParser`, `ConfigConverter`
Consider leveraging:
- SnakeYAML for YAML parsing
- Lightbend Config (HOCON) for flexible staging
- Jackson for JSON serialization/deserialization
Compile-time conversion strategy: use a Maven plugin or annotation processor to transform YAML/HOCON -> JSON before packaging
Runtime fallback chain: defaults -> system files -> user overrides -> environment variables
Contributor guide
Assessment
This issue has not been assessed yet.