mirror of
https://github.com/apricote/releaser-pleaser.git
synced 2026-02-07 10:17:02 +00:00
36 lines
872 B
Go
36 lines
872 B
Go
|
|
package updater
|
||
|
|
|
||
|
|
import (
|
||
|
|
"regexp"
|
||
|
|
)
|
||
|
|
|
||
|
|
// HelmChart creates an updater that modifies the version field in Chart.yaml files
|
||
|
|
func HelmChart() Updater {
|
||
|
|
return helmchart{}
|
||
|
|
}
|
||
|
|
|
||
|
|
type helmchart struct{}
|
||
|
|
|
||
|
|
func (h helmchart) Files() []string {
|
||
|
|
return []string{"Chart.yaml"}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (h helmchart) CreateNewFiles() bool {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
|
||
|
|
func (h helmchart) Update(info ReleaseInfo) func(content string) (string, error) {
|
||
|
|
return func(content string) (string, error) {
|
||
|
|
// Regex to match ^version: ...$ with flexible whitespace in multiline mode
|
||
|
|
versionRegex := regexp.MustCompile(`(?m:^(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
|
||
|
|
return versionRegex.ReplaceAllString(content, `${1}`+info.Version), nil
|
||
|
|
}
|
||
|
|
}
|