func getLatestLightsailctlVersion()

in internal/updatecheck.go [41:67]


func getLatestLightsailctlVersion(
	ctx context.Context,
	g ContainerAPIMetadataGetter,
) (Semver, error) {
	res, err := g.GetContainerAPIMetadata(ctx, &lightsail.GetContainerAPIMetadataInput{})
	if err != nil {
		return "", fmt.Errorf("could not get latest lightsailctl version: %w", err)
	}

	var rawSemver string
	for _, md := range res.Metadata {
		if md["name"] == "lightsailctlVersion" {
			rawSemver = md["value"]
		}
	}

	if rawSemver == "" {
		return "", fmt.Errorf("latest lightsailctl version was not in GetContainerAPIMetadata response")
	}

	ver := Semver(rawSemver)
	if !ver.IsValid() {
		return "", fmt.Errorf("latest lightsailctl version is not a semver: %q", rawSemver)
	}

	return ver, nil
}