func updateEKSDistroBaseImageTagFiles()

in tools/version-tracker/pkg/commands/upgrade/upgrade.go [571:619]


func updateEKSDistroBaseImageTagFiles(client *gogithub.Client, buildToolingRepoPath string, tagFileGlob []string) (string, bool, error) {
	var updatedPackages string
	var isUpdated bool

	eksDistroBaseTagYAMLContents, err := github.GetFileContents(client, constants.AWSOrgName, constants.EKSDistroBuildToolingRepoName, constants.EKSDistroBaseTagsYAMLFile, "main")
	if err != nil {
		return "", false, fmt.Errorf("getting contents of EKS Distro Base tag file: %v", err)
	}

	var eksDistroBaseTagYAMLMap map[string]interface{}
	err = yaml.Unmarshal(eksDistroBaseTagYAMLContents, &eksDistroBaseTagYAMLMap)
	if err != nil {
		return "", false, fmt.Errorf("unmarshalling EKS Distro Base tag file: %v", err)
	}

	for _, tagFile := range tagFileGlob {
		tagFileContents, err := file.ReadContentsTrimmed(tagFile)
		if err != nil {
			return "", false, fmt.Errorf("reading tag file: %v", err)
		}
		tagFileName := filepath.Base(tagFile)
		imageName := strings.TrimSuffix(tagFileName, constants.TagFileSuffix)

		tagFileKey := strings.ReplaceAll(strings.ToLower(imageName), "_", "-")
		osFolder := "2"
		osKey := "al2"
		if strings.HasSuffix(tagFileKey, "al2023") {
			tagFileKey = strings.TrimSuffix(tagFileKey, constants.AL2023Suffix)
			osFolder = "2023"
			osKey = "al2023"
		}
		tagReleaseDate := eksDistroBaseTagYAMLMap[osKey].(map[string]interface{})[tagFileKey].(string)

		if string(tagFileContents) != tagReleaseDate {
			isUpdated = true
			err = os.WriteFile(tagFile, []byte(fmt.Sprintf("%s\n", tagReleaseDate)), 0o644)
			if err != nil {
				return "", false, fmt.Errorf("writing tag file: %v", err)
			}

			updatedPackagesFilesContents, err := github.GetFileContents(client, constants.AWSOrgName, constants.EKSDistroBuildToolingRepoName, fmt.Sprintf(constants.EKSDistroBaseUpdatedPackagesFileFormat, osFolder, tagFileKey), "main")
			if err != nil {
				return "", false, fmt.Errorf("getting contents of EKS Distro Base image updated packages: %v", err)
			}
			updatedPackages = fmt.Sprintf("%s#### %s\nThe following yum packages were updated:\n```bash\n%s```\n\n", updatedPackages, imageName, string(updatedPackagesFilesContents))
		}
	}
	return updatedPackages, isUpdated, nil
}