BrendonButler / BrendonButler/entropy

[Feature] Implement Configuration Management System

Open
#31 0 comments 0 reactions 0 assignees View on GitHub
configuration engine enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.