func updateEKSDistroReleasesFile()

in tools/version-tracker/pkg/commands/upgrade/upgrade.go [522:569]


func updateEKSDistroReleasesFile(buildToolingRepoPath string) (bool, error) {
	var isUpdated bool
	eksDistroReleasesFilepath := filepath.Join(buildToolingRepoPath, constants.EKSDistroLatestReleasesFile)

	eksDistroReleasesFileContents, err := os.ReadFile(eksDistroReleasesFilepath)
	if err != nil {
		return false, fmt.Errorf("reading EKS Distro latest releases file: %v", err)
	}

	var eksDistroLatestReleases types.EKSDistroLatestReleases
	err = yaml.Unmarshal(eksDistroReleasesFileContents, &eksDistroLatestReleases)
	if err != nil {
		return false, fmt.Errorf("unmarshalling EKS Distro latest releases file: %v", err)
	}

	supportedReleaseBranches, err := getSupportedReleaseBranches(buildToolingRepoPath)
	if err != nil {
		return false, fmt.Errorf("getting supported EKS Distro release branches: %v", err)
	}

	for i := range eksDistroLatestReleases.Releases {
		if slices.Contains(supportedReleaseBranches, eksDistroLatestReleases.Releases[i].Branch) {
			number, kubeVersion, err := getLatestEKSDistroRelease(eksDistroLatestReleases.Releases[i].Branch)
			if err != nil {
				return false, fmt.Errorf("getting latest EKS Distro release for %s branch: %v", eksDistroLatestReleases.Releases[i].Branch, err)
			}
			if eksDistroLatestReleases.Releases[i].Number != number || eksDistroLatestReleases.Releases[i].KubeVersion != kubeVersion {
				isUpdated = true
				eksDistroLatestReleases.Releases[i].Number = number
				eksDistroLatestReleases.Releases[i].KubeVersion = kubeVersion
			}
		}
	}

	if isUpdated {
		updatedEKSDistroReleasesFileContents, err := yaml.Marshal(eksDistroLatestReleases)
		if err != nil {
			return false, fmt.Errorf("marshalling EKS Distro latest releases: %v", err)
		}

		err = os.WriteFile(eksDistroReleasesFilepath, updatedEKSDistroReleasesFileContents, 0o644)
		if err != nil {
			return false, fmt.Errorf("writing EKS Distro latest releases file: %v", err)
		}
	}

	return isUpdated, nil
}