Releases: ebogdum/konfigo
Releases · ebogdum/konfigo
v2.0.1
New Feature
-mflag: Merge arrays by union with deduplication instead of replacing. When enabled, merging["a","b"]+["b","c"]produces["a","b","c"]. Default behavior (array replacement) is unchanged.
Usage
# Arrays merged by union (new)
konfigo -m -s base.yaml,override.yaml
# Arrays replaced (default, unchanged)
konfigo -s base.yaml,override.yamlDeduplication uses deep equality, so nested objects in arrays are compared correctly.
Binaries
Pre-built binaries for Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD (amd64/arm64).
v2.0.0
Breaking Changes
Renamed the batch processing directive key in variables files from konfigo_forEach to forEach.
Migration
Update your variables files (-V):
# Before (v1.x)
konfigo_forEach:
items:
- ENV: dev
- ENV: prod
output:
filenamePattern: "config-${ENV}.yaml"
# After (v2.0.0)
forEach:
items:
- ENV: dev
- ENV: prod
output:
filenamePattern: "config-${ENV}.yaml"All error messages and log output now reference forEach instead of konfigo_forEach.
Other Changes
- Fixed README schema examples to match actual schema file format (the README previously showed
konfigo_schema,konfigo_generate,konfigo_transform,konfigo_validate,konfigo_setwhich were never valid schema keys) - Updated all documentation references from
konfigo_forEachtoforEach - Updated all test fixtures to use
forEach - Added
llms.txtfor LLM documentation - Rebuilt static documentation site
Release v1.0.5
What's Changed
Bug Fixes
- Fix merge precedence to preserve CLI source order (last file wins)
- Add nil guard in type validator to prevent panic on null values
- Fix positional args support in
ShouldShowHelp - Make file extension checks case-insensitive in discovery
- Return parse errors instead of silently skipping failures
- Resolve schema input/output refs relative to schema file directory
- Clean up
_internalkey from generator output - Fix build script to exit on build errors
- Fix validation scripts
set -einteraction and remove dead code - Fix
.gitignoreto only exclude test output directories
Documentation
- Remove references to non-existent CLI flags from docs
- Add examples to the main README
- Add the logo and include it in the README
- Create CODE_OF_CONDUCT.md (Contributor Covenant v2.1)
- Update changelog
Code Quality
- Run
gofmtacross entire project - Add Go unit tests for validator, discovery, and generators
- Add missing expected fixture files and update stale baselines
- Organize
.gitignorefile
Dependencies
- Upgrade esbuild and vitepress to fix security vulnerabilities
- Bump
gopkg.in/ini.v1from 1.67.0 to 1.67.1 - Bump
github.com/BurntSushi/tomlfrom 1.5.0 to 1.6.0 - Bump
esbuildfrom 0.25.5 to 0.27.2 - Bump
vitepressfrom 1.6.3 to 1.6.4 - Bump
vite(npm_and_yarn group)
Security
- Resolved Dependabot alerts for preact, mdast-util-to-hast, and vite
Release v1.0.4
v1.0.4
New Features
- Added:
addKeySuffixtransformer - Adds suffixes to all keys within a map object- Usage: Transforms map keys by appending specified suffix to each key name
- Fields:
type: "addKeySuffix",path: "path.to.map",suffix: "_suffix" - Example: Transform
{host: "localhost", port: 5432}to{host_prod: "localhost", port_prod: 5432}
- Added:
deleteKeytransformer - Removes specified keys from configuration- Usage: Deletes configuration keys at specified paths (useful for removing sensitive data)
- Fields:
type: "deleteKey",path: "path.to.key" - Example: Remove secrets, temporary values, or deprecated configuration keys
- Added:
trimtransformer - Trims whitespace or custom patterns from string values- Usage: Cleans up string values by removing unwanted characters from start/end
- Fields:
type: "trim",path: "path.to.string",pattern: "characters"(optional) - Default: Trims whitespace if no pattern specified
- Example:
" value "to"value"or"---token---"to"token"(with pattern: "-")
- Added:
replaceKeytransformer - Replaces value with content from another path- Usage: Takes value from target path, places it at destination path, then deletes target
- Fields:
type: "replaceKey",path: "destination.path",target: "source.path" - Example: Move temporary/staged values to their final configuration locations
Enhancements
- Enhanced:
changeCasetransformer now supports additional case formats- Added:
kebabcase support for kebab-case conversions - Added:
pascalcase support for PascalCase conversions - Supported formats: upper, lower, snake, camel, kebab, pascal
- Added:
- Enhanced: Transformer Definition structure with new fields
- Added:
suffixfield for addKeySuffix transformer - Added:
patternfield for trim transformer - Added:
targetfield for replaceKey transformer - Improved: Variable substitution now supports all new transformer fields
- Added:
Tests
- Enhanced: Transformer test suite to include new transformer types
- Added: Test schemas for addKeySuffix, deleteKey, trim, and replaceKey transformers
- Added: Test cases covering all new transformer functionality and edge cases
- Added: Error handling tests for new transformers (missing paths, type mismatches)
- Added: Variable substitution tests for new transformer fields
Documentation
- Enhanced: Transformation documentation with comprehensive coverage of new transformers
- Added: Complete documentation for
addKeySuffixtransformer with examples - Added: Complete documentation for
deleteKeytransformer with use cases - Added: Complete documentation for
trimtransformer with pattern examples - Added: Complete documentation for
replaceKeytransformer with workflow examples - Updated: Transformation overview to include all eight available transformer types
- Enhanced: Combined transformation examples showing new transformers in action
- Added: Complete documentation for
Release v1.0.3
Release v1.0.3
New Features
- Added:
timestampgenerator - Generates current timestamp values in various formats- Formats: unix, unixmilli, rfc3339, iso8601, and custom Go time format strings
- Usage: Perfect for adding creation timestamps, build times, or unique time-based values
- Added:
randomgenerator - Creates random values in multiple formats- Formats: int:min:max, float:min:max, string:length, bytes:length, uuid
- Usage: Ideal for generating test data, session tokens, or random configuration values
- Added:
idgenerator - Generates various types of identifiers using [a-zA-Z0-9] characters- Formats: simple:length, prefix:prefix:length, numeric:length, alpha:length, sequential, timestamp
- Usage: Creates user IDs, session counters, trace IDs, and other unique identifiers
Enhancements
- Enhanced:
release.sh- Added automated build step and changelog reset functionality- Added: Automatic execution of
builds.shbefore release process - Added: Post-release changelog reset with user confirmation
- Added:
reset_changelog()function to prepare changelog for next development cycle - Added: Automatic backup creation when resetting changelog
- Improved: Step numbering and workflow organization
- Added: Automatic execution of
Tests
- Enhanced: Generator test suite to include new generator types
- Added: Test schemas for timestamp, random, and id generators
- Added: Test cases covering all new generator formats and edge cases
- Added: Documentation for new generator test coverage
Documentation
- Enhanced: Generator documentation with comprehensive coverage of new generators
- Added: Complete documentation for
timestampgenerator with format examples - Added: Complete documentation for
randomgenerator with all format types - Added: Complete documentation for
idgenerator with pattern examples - Updated: Generator overview to include all four available generator types
- Added: Complete documentation for
Release v1.0.2
[Latest Commit] - 2025-06-27
Release Script Enhancement
Modified Files
- Enhanced:
release.sh- Integrated automatic changelog extraction for GitHub releases
New Features
- Added:
extract_changelog_for_version()function to automatically extract release notes fromCHANGELOG.md - Enhanced: Release creation process now automatically uses changelog content for GitHub releases
- Improved: Fallback mechanism when version-specific content isn't found in changelog
- Added: Automatic cleanup of temporary files during release process
Configuration Changes
- Updated: Default
notes_fileconfiguration to useCHANGELOG.md - Enhanced: Release notes extraction supports various changelog formats (with/without brackets, version prefixes)
Internal Architecture Changes
New Packages and Modules
CLI Package (internal/cli/)
- Added:
commands.go- Command execution logic and coordination - Added:
flags.go- Flag definitions, parsing, and validation - Added:
help.go- Help text generation and display
Configuration Package (internal/config/)
- Added:
batch.go- Batch processing configuration - Added:
config.go- Core configuration structures - Added:
environment.go- Environment handling
Error Handling (internal/errors/)
- Added:
errors.go- Centralized error handling system
Features Package (internal/features/)
- Added:
generator/- Code generation features (concat.go, registry.go, types.go) - Added:
input_schema/- Input schema validation (loader.go, validator.go) - Added:
transformer/- Data transformation features (add_key_prefix.go, change_case.go, registry.go, rename_key.go, set_value.go, types.go) - Added:
validator/- Validation engine (engine.go, number.go, numeric_validator.go, registry.go, string_validator.go, type_validator.go, types.go) - Added:
variables/- Variable handling (resolver.go, substitution.go, types.go)
Core Services
- Added:
logger/logger.go- Centralized logging system - Added:
marshaller/- Output formatting (env.go, json.go, marshaller.go, registry.go, toml.go, yaml.go) - Added:
merger/merger.go- Configuration merging logic - Added:
parser/- Input parsing (detector.go, env.go, ini.go, json.go, parser.go, registry.go, toml.go, yaml.go) - Added:
pipeline/- Processing pipeline (batch.go, coordinator.go, optimized.go, pipeline.go, single.go) - Added:
reader/- File reading (discovery.go, reader.go, stream.go) - Added:
util/- Utility functions (type_inference.go, util.go) - Added:
writer/- Output writing (directory.go, target.go, writer.go)
Modified Schema Package (internal/schema/)
- Removed:
generator.go,transformer.go,validator.go- Functionality moved tointernal/features/ - Modified:
vars.gomoved tointernal/features/variables/resolver.go - Added:
processor.go- Schema processing logic
Test Infrastructure Changes
- Added: Batch processing tests (
test/batch/) - Added: Environment integration tests (
test/env-integration/) - Added: Format conversion tests (
test/format-conversion/) - Added: Generator tests (
test/generators/) - Modified:
test/common_functions.sh- Updated common test functions
Summary
- 58 new files in
internal/package - 200+ new test files across multiple test suites
- Complete modularization of the codebase with feature-based architecture
- Comprehensive test coverage for batch processing, environment integration, format conversion, and generators
Key Improvements
- Modular Architecture: Complete restructuring into feature-based modules
- Enhanced Testing: Comprehensive test suites for all major features
- Better Separation of Concerns: Clear separation between CLI, processing, and feature logic
- Improved Maintainability: Registry-based pattern for extensible functionality
- Robust Error Handling: Centralized error management system
Release v1.0.1
What's Changed
- Bump github.com/BurntSushi/toml from 1.4.0 to 1.5.0 by @dependabot in #2
New Contributors
- @dependabot made their first contribution in #2
Full Changelog: v1.0.0...v1.0.1
Release v1.0.0
Full Changelog: https://github.com/ebogdum/konfigo/commits/v1.0.0