feat(version): add file replacement variant for version_variables #1391
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
version_variableswhen pattern is*. Enables stamping version-only files likeVERSIONwithout regex patterns.Rationale
Users with simple version files (containing only
1.2.3orv1.2.3) must currently define regex patterns matching variable assignments. For files with no structure—just the version string—this is unnecessarily complex. The*pattern triggers full file replacement: read, strip whitespace, write new version.Implementation
New
FileVersionDeclarationclass implementingIVersionReplacer:nf(number) andtf(tag) formatsConfig parsing (
cli/config.py):*in pattern positionFileVersionDeclarationinstead ofPatternVersionDeclarationUsage
How did you test?
Unit tests (16): Valid/invalid definitions, format types, file operations, error cases, noop behavior
E2E tests (3): Number format, tag format, whitespace handling
Manual verification: Created test repo, configured both patterns, confirmed VERSION files updated correctly
How to Verify
VERSIONfile with0.1.0version_variables = ["VERSION:*:nf"]semantic-release version --minor --no-commit --no-tagVERSIONcontains0.2.0(no whitespace, no prefix)PR Completion Checklist
Reviewed & followed the Contributor Guidelines
Changes Implemented & Validation pipeline succeeds
Commits follow the Conventional Commits standard
and are separated into the proper commit type and scope (recommended order: test, build, feat/fix, docs)
Appropriate Unit tests added/updated
Appropriate End-to-End tests added/updated
Appropriate Documentation added/updated and syntax validated for sphinx build (see Contributor Guidelines)
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.