func GetAgentRelease()

in common/utils.go [31:71]


func GetAgentRelease(client *s3.Client, bucketName *string, prefix *string) *Release {
	output := aws.ListBucket(client, bucketName, prefix)
	releases := make(map[int]*Release)
	releaseDates := make([]int, 0)
	for _, value := range output.Contents {
		paths := strings.Split(*value.Key, "/")
		version := strings.Split(paths[1], ".")
		if len(version) != 3 {
			continue
		}
		date, err := strconv.Atoi(version[1])
		if err != nil {
			continue
		}
		release, ok := releases[date]

		if !ok {
			release = &Release{}
			releases[date] = release
			releaseDates = append(releaseDates, date)
		}

		if strings.HasSuffix(paths[2], "tgz") || strings.HasSuffix(paths[2], "zip") {
			release.s3Location = *value.Key
		} else if strings.HasSuffix(paths[2], "shasum") {
			if strings.HasPrefix(paths[2], "sha1") {
				release.sha1_shasum = *value.Key
			} else if strings.HasPrefix(paths[2], "sha256") {
				release.sha256_shasum = *value.Key
			} else if strings.HasPrefix(paths[2], "sha512") {
				release.sha512_shasum = *value.Key
			} else if strings.HasPrefix(paths[2], "md5") {
				release.md5_shasum = *value.Key
			}
		}
	}

	sort.Ints(releaseDates)
	latestReleaseDate := releaseDates[len(releaseDates)-1]
	return releases[latestReleaseDate]
}