ConfigForge
ConfigForge is a Rust CLI tool for converting, inspecting, validating, querying, and safely editing configuration files.
Current format support:
- JSON
- JSON5 input
- TOML
- YAML
.env- INI
- Java
.properties
Install
Usage
When writing converted content to stdout, pass --to so the output format is explicit:
JSON5 is currently supported as an input format. Writing JSON5 is intentionally not enabled yet because comments and relaxed syntax are not preserved by the shared configuration value model.
ConfigForge does not overwrite existing output files by default. Pass --overwrite when replacing a file is intentional:
get reads values by dot path. Numeric path segments index arrays:
set and delete update existing paths only and require an output file. They do not modify the input file in place:
By default, set treats the replacement as a string. Pass --value-format json for numbers, booleans, arrays, objects, or null.
merge recursively combines object values. Override scalar values and arrays replace the base value:
diff prints path-oriented changes:
Example output:
changed server.port
removed server.debug
added server.timeout
Key-value formats are intentionally conservative:
.envreads top-levelKEY=valuepairs and writes only top-level string values.- INI maps sections to objects, such as
[server]toserver.*. .propertiesexpands and flattens dotted keys, such asserver.host.- Values read from
.env, INI, and.propertiesremain strings; ConfigForge does not infer booleans or numbers for these formats.
Schema validation uses local JSON Schema files:
The schema file itself must be JSON. Remote and file reference resolution is not
enabled in this build, so validation does not fetch external $ref targets.
Package Check
Before publishing a release build:
Release tags use this format: