tools/eksDistroBuildToolingOpsTools/pkg/eksGoRelease/eksGoRelease.go (102 lines of code) (raw):

package eksGoRelease import ( "fmt" "strconv" "strings" "github.com/aws/eks-distro-build-tooling/tools/eksDistroBuildToolingOpsTools/pkg/constants" "github.com/aws/eks-distro-build-tooling/tools/eksDistroBuildToolingOpsTools/pkg/logger" ) func NewEksGoReleaseObject(versionString string) (*Release, error) { splitVersion := strings.Split(versionString, ".") major, err := strconv.Atoi(splitVersion[0]) if err != nil { return nil, fmt.Errorf("parsing major version: %v", err) } minor, err := strconv.Atoi(splitVersion[1]) if err != nil { return nil, fmt.Errorf("parsing minor version: %v", err) } patch, err := strconv.Atoi(splitVersion[2]) if err != nil { return nil, fmt.Errorf("parsing patch version: %v", err) } return &Release{ Major: major, Minor: minor, Patch: patch, }, nil } type Release struct { Major int Minor int Patch int Release int } func (r Release) GoReleaseBranch() string { return fmt.Sprintf("release-branch.go%d.%d", r.Major, r.Minor) } func (r Release) MajorVersion() int { return r.Major } func (r Release) MinorVersion() int { return r.Minor } func (r Release) PatchVersion() int { return r.Patch } func (r Release) ReleaseNumber() int { return r.Release } func (r Release) EksGoReleaseVersion() string { return fmt.Sprintf("v%d.%d.%d-%d", r.Major, r.Minor, r.Patch, r.Release) } func (r Release) GoFullVersion() string { return fmt.Sprintf("%d.%d.%d", r.Major, r.Minor, r.Patch) } func (r Release) GoMinorVersion() string { return fmt.Sprintf("%d.%d", r.Major, r.Minor) } func (r Release) GoSemver() string { return fmt.Sprintf("v%d.%d.%d", r.Major, r.Minor, r.Patch) } // "https://distro.eks.amazonaws.com/golang-go%d.%d.%d/release/%d/%s/%s/%s" func (r Release) EksGoArtifacts(arch string) (string, string, string) { var artifact string // artifact = "golang-%d.%d.%d-%d.amzn2.eks.%s.rpm" var urlFmt string // artifact = "golang-%d.%d.%d-%d.amzn2.eks.%s.rpm" switch arch { case "x86_64", "aarch64": artifact = fmt.Sprintf(constants.EksGoRpmArtifactFmt, r.Major, r.Minor, r.Patch, r.Release, arch) urlFmt = fmt.Sprintf(constants.EksGoArtifactUrl, r.Major, r.Minor, r.Patch, r.Release, arch, "RPMS", arch) case "noarch": artifact = fmt.Sprintf(constants.EksGoNoarchRpmArtifactFmt, r.MajorVersion(), r.MinorVersion(), r.PatchVersion(), r.ReleaseNumber(), arch) urlFmt = fmt.Sprintf(constants.EksGoArtifactUrl, r.Major, r.Minor, r.Patch, r.Release, "x86_64", "RPMS", arch) case "amd64", "arm64": artifact = fmt.Sprintf(constants.EksGoTargzArtifactFmt, r.Major, r.Minor, r.Patch, arch) urlFmt = fmt.Sprintf(constants.EksGoArtifactUrl, r.Major, r.Minor, r.Patch, r.Release, "archives", "linux", arch) } return artifact, fmt.Sprintf("%s.sha256", artifact), urlFmt } func (r Release) EksGoAmdBuild() string { return fmt.Sprintf(constants.EksGoAmdBuildUrl, r.Major, r.Minor) } func (r Release) EksGoArmBuild() string { return fmt.Sprintf(constants.EksGoArmBuildUrl, r.Major, r.Minor) } func (r Release) Equals(release Release) bool { if r.Major != release.MajorVersion() { logger.V(4).Info("Major version not equal", "self Major", r.Major, "compare Major", release.MajorVersion()) return false } if r.Minor != release.MinorVersion() { logger.V(4).Info("Minor version not equal", "self Minor", r.Minor, "compare Minor", release.MinorVersion()) return false } if r.Patch != release.PatchVersion() { logger.V(4).Info("Patch version not equal", "self Patch", r.Patch, "compare Patch", release.PatchVersion()) return false } if r.Release != release.ReleaseNumber() { logger.V(4).Info("Release version not equal", "self Release", r.Release, "compare Release", release.ReleaseNumber()) return false } return true }