feat: add updater for package.json (#213)

This commit is contained in:
Mattis Krämer 2025-08-23 22:05:52 +02:00 committed by GitHub
parent 6237c9b666
commit 1e9e0aa5d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 174 additions and 44 deletions

View file

@ -0,0 +1,30 @@
package updater
import (
"regexp"
"strings"
)
// PackageJson creates an updater that modifies the version field in package.json files
func PackageJson(info ReleaseInfo) Updater {
return func(content string, filename string) (string, error) {
if filename != "package.json" {
return content, nil // No update needed for non-package.json files
}
// We strip the "v" prefix to match npm versioning convention
version := strings.TrimPrefix(info.Version, "v")
// Regex to match "version": "..." with flexible whitespace and quote styles
versionRegex := regexp.MustCompile(`("version"\s*:\s*)"[^"]*"`)
// Check if the file contains a version field
if !versionRegex.MatchString(content) {
return content, nil
}
// Replace the version value while preserving the original formatting
updatedContent := versionRegex.ReplaceAllString(content, `${1}"`+version+`"`)
return updatedContent, nil
}
}