mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-01-13 21:21:03 +00:00
30 lines
922 B
Go
30 lines
922 B
Go
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
|
|
}
|
|
}
|