in cmd/release/number/main.go [99:145]
func updateKubeGitVersionFile(release *Release) error {
if len(release.EKSBranchPreviousNumber) == 0 {
return errors.New("failed to update KUBE_GIT_VERSION because previous release version tag is empty")
}
if len(release.EKSBranchNumber) == 0 {
return errors.New("failed to update KUBE_GIT_VERSION because release version tag is empty")
}
kubeGitVersionFilePath := release.KubeGitVersionFilePath
data, err := ioutil.ReadFile(kubeGitVersionFilePath)
if err != nil {
return fmt.Errorf("failed to read file because error: %v", err)
}
linebreak := []byte("\n")
splitData := bytes.Split(data, linebreak)
prefix := []byte("KUBE_GIT_VERSION='")
hasFoundPrefix := false
for i, line := range splitData {
if !bytes.HasPrefix(line, prefix) {
continue
}
hasFoundPrefix = true
// End of line character (') is included to ensure entire version tag is captured
versionTagToEndOfLine := []byte(release.EKSBranchNumber + "'")
if bytes.Contains(line, versionTagToEndOfLine) {
log.Printf("version tag %q already set", release.EKSBranchNumber)
return nil
}
prevVersionTagToEndOfLine := []byte(release.EKSBranchPreviousNumber + "'")
if !bytes.Contains(line, prevVersionTagToEndOfLine) {
return fmt.Errorf("fail to find previous version tag %q to replace", release.EKSBranchPreviousNumber)
}
splitData[i] = bytes.Replace(line, prevVersionTagToEndOfLine, versionTagToEndOfLine, 1)
break
}
if !hasFoundPrefix {
return fmt.Errorf("failed to find line starting with %q that is needed to update version tag", prefix)
}
return os.WriteFile(kubeGitVersionFilePath, bytes.Join(splitData, linebreak), 0644)
}