From e649269cff2663f46fbf55bb42d5f4fe804f2d8c Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Thu, 15 Aug 2024 15:43:29 -0700 Subject: [PATCH 01/21] added eks-a-releaser files --- .../create-branch.yml | 8 + .../create-release.yml | 8 + .../go-build-binary.yml | 14 + .../eks-a-releaser-buildspec/prod-bundle.yml | 8 + .../eks-a-releaser-buildspec/prod-cli.yml | 8 + .../eks-a-releaser-buildspec/stage-bundle.yml | 8 + .../eks-a-releaser-buildspec/stage-cli.yml | 8 + .../update-homebrew.yml | 8 + .../update-makefile.yml | 8 + .../eks-a-releaser-buildspec/update-prow.yml | 8 + release/cli/cmd/create-branch.go | 182 +++++++++ release/cli/cmd/create-release.go | 174 +++++++++ release/cli/cmd/prod-bundle.go | 145 +++++++ release/cli/cmd/prod-cli.go | 139 +++++++ release/cli/cmd/stage-bundle.go | 248 ++++++++++++ release/cli/cmd/stage-cli.go | 140 +++++++ release/cli/cmd/trigger.go | 31 ++ release/cli/cmd/update-homebrew.go | 156 ++++++++ release/cli/cmd/update-makefile.go | 156 ++++++++ release/cli/cmd/update-prow.go | 306 +++++++++++++++ release/cli/go.mod | 25 +- release/cli/go.sum | 364 ++++-------------- 22 files changed, 1855 insertions(+), 297 deletions(-) create mode 100644 release/buildspecs/eks-a-releaser-buildspec/create-branch.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/create-release.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/prod-bundle.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/prod-cli.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/stage-bundle.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/stage-cli.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/update-homebrew.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/update-makefile.yml create mode 100644 release/buildspecs/eks-a-releaser-buildspec/update-prow.yml create mode 100644 release/cli/cmd/create-branch.go create mode 100644 release/cli/cmd/create-release.go create mode 100644 release/cli/cmd/prod-bundle.go create mode 100644 release/cli/cmd/prod-cli.go create mode 100644 release/cli/cmd/stage-bundle.go create mode 100644 release/cli/cmd/stage-cli.go create mode 100644 release/cli/cmd/trigger.go create mode 100644 release/cli/cmd/update-homebrew.go create mode 100644 release/cli/cmd/update-makefile.go create mode 100644 release/cli/cmd/update-prow.go diff --git a/release/buildspecs/eks-a-releaser-buildspec/create-branch.yml b/release/buildspecs/eks-a-releaser-buildspec/create-branch.yml new file mode 100644 index 000000000000..7f0ed89a6e7d --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/create-branch.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger create-branch diff --git a/release/buildspecs/eks-a-releaser-buildspec/create-release.yml b/release/buildspecs/eks-a-releaser-buildspec/create-release.yml new file mode 100644 index 000000000000..f03d09f9eaab --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/create-release.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger create-release diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml new file mode 100644 index 000000000000..162bf085951c --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -0,0 +1,14 @@ +version: 0.2 + +phases: + pre_build: + commands: + - ./release/scripts/setup.sh + + build: + commands: + - make dev-release -C release + + artifacts: + files: + - release/bin/eks-anywhere-release \ No newline at end of file diff --git a/release/buildspecs/eks-a-releaser-buildspec/prod-bundle.yml b/release/buildspecs/eks-a-releaser-buildspec/prod-bundle.yml new file mode 100644 index 000000000000..a960cef5b0fa --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/prod-bundle.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger prod-bundle diff --git a/release/buildspecs/eks-a-releaser-buildspec/prod-cli.yml b/release/buildspecs/eks-a-releaser-buildspec/prod-cli.yml new file mode 100644 index 000000000000..00c1183127cb --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/prod-cli.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger prod-cli diff --git a/release/buildspecs/eks-a-releaser-buildspec/stage-bundle.yml b/release/buildspecs/eks-a-releaser-buildspec/stage-bundle.yml new file mode 100644 index 000000000000..adf61df8d011 --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/stage-bundle.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger stage-bundle diff --git a/release/buildspecs/eks-a-releaser-buildspec/stage-cli.yml b/release/buildspecs/eks-a-releaser-buildspec/stage-cli.yml new file mode 100644 index 000000000000..7843842741e2 --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/stage-cli.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger stage-cli diff --git a/release/buildspecs/eks-a-releaser-buildspec/update-homebrew.yml b/release/buildspecs/eks-a-releaser-buildspec/update-homebrew.yml new file mode 100644 index 000000000000..f0646e828fba --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/update-homebrew.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger update-homebrew diff --git a/release/buildspecs/eks-a-releaser-buildspec/update-makefile.yml b/release/buildspecs/eks-a-releaser-buildspec/update-makefile.yml new file mode 100644 index 000000000000..10ce1719996c --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/update-makefile.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger update-makefile diff --git a/release/buildspecs/eks-a-releaser-buildspec/update-prow.yml b/release/buildspecs/eks-a-releaser-buildspec/update-prow.yml new file mode 100644 index 000000000000..af875f2175f9 --- /dev/null +++ b/release/buildspecs/eks-a-releaser-buildspec/update-prow.yml @@ -0,0 +1,8 @@ +version: 0.2 +env: + secrets-manager: + SECRET_PAT: "github-eks-distro-pr-bot:github-token" +phases: + build: + commands: + - ${CODEBUILD_SRC_DIR}/release/bin/eks-anywhere-release trigger update-prow diff --git a/release/cli/cmd/create-branch.go b/release/cli/cmd/create-branch.go new file mode 100644 index 000000000000..76c295caeea0 --- /dev/null +++ b/release/cli/cmd/create-branch.go @@ -0,0 +1,182 @@ +package cmd + +/* + what does this command do? + + if release type is "minor" then : + creates a new release branch in upstream eks-a repo based off "main" & build tooling repo + + creates a new release branch in forked repo based off newly created release branch in upstream repo + + else : + creates a new patch branch in users forked repo based off latest release branch upstream + +*/ + +import ( + "context" + "fmt" + "os" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + buildToolingRepoName = "eks-anywhere-build-tooling" + upStreamRepoOwner = "testerIbix" // will eventually be replaced by actual upstream owner, aws +) + +// createBranchCmd represents the createBranch command +var createBranchCmd = &cobra.Command{ + Use: "create-branch", + Short: "Creates new release branch from updated trigger file", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command.`, + + Run: func(cmd *cobra.Command, args []string) { + + err := releaseDecision() + if err != nil { + fmt.Printf("error creating branch %s", err) + } + }, +} + +func releaseDecision() error { + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + if RELEASE_TYPE == "minor" { + err := createMinorBranches() + if err != nil { + fmt.Printf("error calling createMinorBranches %s", err) + } + return nil + } + // else + err := createPatchBranch() + if err != nil { + fmt.Printf("error calling createPatchBranch %s", err) + } + return nil +} + +func createMinorBranches() error { + + latestRelease := os.Getenv("LATEST_RELEASE") + + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // create branch in upstream repo based off main branch + ref := "refs/heads/" + latestRelease + baseRef := "main" + + // Get the reference for the base branch + baseRefObj, _, err := client.Git.GetRef(ctx, upStreamRepoOwner, EKSAnyrepoName, "heads/"+baseRef) + if err != nil { + return fmt.Errorf("error getting base branch reference one: %v", err) + } + + // Create a new branch + newBranchRef, _, err := client.Git.CreateRef(ctx, upStreamRepoOwner, EKSAnyrepoName, &github.Reference{ + Ref: &ref, + Object: &github.GitObject{ + SHA: baseRefObj.Object.SHA, + }, + }) + if err != nil { + return fmt.Errorf("error creating branch one: %v", err) + } + + // branch created upstream + fmt.Printf("New release branch '%s' created upstream successfully\n", *newBranchRef.Ref) + + // create branch in forked repo based off upstream + ref = "refs/heads/" + latestRelease + baseRef = latestRelease + + // Get the reference for the base branch from the upstream repository + baseRefObj, _, err = client.Git.GetRef(ctx, upStreamRepoOwner, EKSAnyrepoName, "heads/"+baseRef) + if err != nil { + return fmt.Errorf("error getting base branch reference two: %v", err) + } + + // Create a new branch + newBranchRef, _, err = client.Git.CreateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, &github.Reference{ + Ref: &ref, + Object: &github.GitObject{ + SHA: baseRefObj.Object.SHA, + }, + }) + if err != nil { + return fmt.Errorf("error creating branch two: %v", err) + } + + // branch created upstream + fmt.Printf("New user fork branch '%s' created successfully\n", *newBranchRef.Ref) + + // create branch in upstream build tooling repo based off main branch + ref = "refs/heads/" + latestRelease + baseRef = "main" + + // Get the reference for the base branch + baseRefObj, _, err = client.Git.GetRef(ctx, upStreamRepoOwner, buildToolingRepoName, "heads/"+baseRef) + if err != nil { + return fmt.Errorf("error getting base branch reference three: %v", err) + } + + // Create a new branch + newBranchRef, _, err = client.Git.CreateRef(ctx, upStreamRepoOwner, buildToolingRepoName, &github.Reference{ + Ref: &ref, + Object: &github.GitObject{ + SHA: baseRefObj.Object.SHA, + }, + }) + if err != nil { + return fmt.Errorf("error creating branch three: %v", err) + } + + // branch created upstream + fmt.Printf("New build tooling branch '%s' created successfully\n", *newBranchRef.Ref) + + return nil +} + +func createPatchBranch() error { + + latestRelease := os.Getenv("LATEST_RELEASE") + + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // create branch in forked repo based off upstream + ref := "refs/heads/" + latestRelease + "-releaser-patch" + baseRef := latestRelease + + // Get the reference for the base branch from upstream + baseRefObj, _, err := client.Git.GetRef(ctx, upStreamRepoOwner, EKSAnyrepoName, "heads/"+baseRef) + if err != nil { + return fmt.Errorf("error getting base branch reference: %v", err) + } + + // Create a new branch in fork + newBranchRef, _, err := client.Git.CreateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, &github.Reference{ + Ref: &ref, + Object: &github.GitObject{ + SHA: baseRefObj.Object.SHA, + }, + }) + if err != nil { + return fmt.Errorf("error creating branch: %v", err) + } + + // branch created upstream + fmt.Printf("New branch '%s' created successfully\n", *newBranchRef.Ref) + + return nil +} diff --git a/release/cli/cmd/create-release.go b/release/cli/cmd/create-release.go new file mode 100644 index 000000000000..e02c88afd842 --- /dev/null +++ b/release/cli/cmd/create-release.go @@ -0,0 +1,174 @@ +package cmd + +/* + what does this command do? + + this command is responsible for creating a release tag with the commit hash that triggered the prod CLI release + + depending on release type, either minor or patch branch will be checked to retrieve commit hash +*/ + +import ( + "context" + "fmt" + "log" + "os" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" + "golang.org/x/oauth2" +) + +// createReleaseCmd represents the createRelease command +var createReleaseCmd = &cobra.Command{ + Use: "create-release", + Short: "A brief description of your command", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command.`, + + Run: func(cmd *cobra.Command, args []string) { + runBothTag() + }, +} + +func runBothTag() { + + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + //retrieve commit hash + commitHash := retrieveLatestProdCLIHash(RELEASE_TYPE) + + //create tag with commit hash + tag, errOne := createTag(commitHash) + if errOne != nil { + log.Panic(errOne) + } + + rel, errTwo := createGitHubRelease(tag) + if errTwo != nil { + log.Panic(errTwo) + } + + //print release object + fmt.Print(rel) +} + +// creates tag using retrieved commit hash +func createTag(commitHash string) (*github.RepositoryRelease, error) { + + // retrieve tag name "v0.0.00" + latestVersionValue := os.Getenv("LATEST_VERSION") + + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + + // Create a new GitHub client instance with the token type set to "Bearer" + ts := oauth2.StaticTokenSource(&oauth2.Token{ + AccessToken: accessToken, + TokenType: "Bearer", + }) + tc := oauth2.NewClient(ctx, ts) + client := github.NewClient(tc) + + releaseName := latestVersionValue + releaseDesc := latestVersionValue //"EKS-Anywhere " + latestVersionValue + " release" + commitSHA := commitHash + release := &github.RepositoryRelease{ + TagName: github.String(releaseName), + Name: github.String(releaseName), + Body: github.String(releaseDesc), + TargetCommitish: github.String(commitSHA), + } + + rel, _, err := client.Repositories.CreateRelease(ctx, upStreamRepoOwner, EKSAnyrepoName, release) + if err != nil { + fmt.Printf("error creating release: %v", err) + } + + fmt.Printf("Release tag %s created successfully!\n", rel.GetTagName()) + return rel, nil +} + +func retrieveLatestProdCLIHash(releaseType string) string { + latestRelease := os.Getenv("LATEST_RELEASE") + + if releaseType == "minor" { + + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + opts := &github.CommitsListOptions{ + Path: prodCliReleaseVerPath, // file to check + SHA: latestRelease, // branch to check - release-0.xx + } + + commits, _, err := client.Repositories.ListCommits(ctx, usersForkedRepoAccount, EKSAnyrepoName, opts) + if err != nil { + return "error fetching commits list" + } + + if len(commits) > 0 { + latestCommit := commits[0] + return latestCommit.GetSHA() + } + + return "no commits found for file" + + } + + // else + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + opts := &github.CommitsListOptions{ + Path: prodCliReleaseVerPath, // file to check + SHA: latestRelease + "-releaser-patch", // branch to check - release-0.xx-releaser-patch + } + + commits, _, err := client.Repositories.ListCommits(ctx, usersForkedRepoAccount, EKSAnyrepoName, opts) + if err != nil { + return "error fetching commits list" + } + + if len(commits) > 0 { + latestCommit := commits[0] + return latestCommit.GetSHA() + } + + return "no commits found for file" + +} + +func createGitHubRelease(releaseTag *github.RepositoryRelease) (*github.RepositoryRelease, error) { + + latestVersionValue := os.Getenv("LATEST_VERSION") + + //create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + release, _, err := client.Repositories.GetReleaseByTag(ctx, upStreamRepoOwner, EKSAnyrepoName, latestVersionValue) + if err == nil { + fmt.Printf("Release %s already exists!\n", latestVersionValue) + return release, nil + } + + release = &github.RepositoryRelease{ + TagName: releaseTag.TagName, + Name: &latestVersionValue, + Body: releaseTag.Body, + } + + rel, _, err := client.Repositories.CreateRelease(ctx, upStreamRepoOwner, EKSAnyrepoName, release) + if err != nil { + return nil, err + } + + return rel, nil +} diff --git a/release/cli/cmd/prod-bundle.go b/release/cli/cmd/prod-bundle.go new file mode 100644 index 000000000000..4498a6d7cc0e --- /dev/null +++ b/release/cli/cmd/prod-bundle.go @@ -0,0 +1,145 @@ +package cmd + +/* + what does this command do? + + this command is responsible for staging prod bundle release + + A PR is then created originating from the forked repo targeting the upstream repo latest release branch + + changes are committed into branch depending on release type +*/ +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + prodBundleNumPath = "release/triggers/bundle-release/production/BUNDLE_NUMBER" + prodCliMaxVersionPath = "release/triggers/bundle-release/production/CLI_MAX_VERSION" + prodCliMinVersionPath = "release/triggers/bundle-release/production/CLI_MIN_VERSION" +) + +// prodBundleCmd represents the prodBundle command +var prodBundleCmd = &cobra.Command{ + Use: "prod-bundle", + Short: "creates a PR containing a single commit updating the contents of 3 files intended for prod bundle release", + Long: `Retrieves updated content for production : bundle number, cli max version, and cli min version. + Writes the updated changes to the 3 files and raises a PR with a single commit.`, + + Run: func(cmd *cobra.Command, args []string) { + err := updateAllProdBundleFiles() + if err != nil { + log.Panic(err) + } + }, +} + +func updateAllProdBundleFiles() error { + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + _, err := updateProdBundleFiles(RELEASE_TYPE) + if err != nil { + return err + } + + err = createProdBundlePullRequest(RELEASE_TYPE) + if err != nil { + return err + } + + return nil +} + +func updateProdBundleFiles(releaseType string) (string, error) { + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + bundleNumber := os.Getenv("RELEASE_NUMBER") + latestVersion := os.Getenv("LATEST_VERSION") + latestRelease := os.Getenv("LATEST_RELEASE") + + // Get the latest commit SHA from the appropriate branch + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) + if err != nil { + return "", fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(prodBundleNumPath, "/")), Type: github.String("blob"), Content: github.String(string(bundleNumber)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(prodCliMaxVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(prodCliMinVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return "", fmt.Errorf("error creating tree %s", err) + } + + newTreeSHA := tree.GetSHA() + + // Create a new commit with all the changes + author := &github.CommitAuthor{ + Name: github.String("eks-a-releaser"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update version files for production bundle release"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return "", fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // Update the branch reference + ref.Object.SHA = github.String(newCommitSHA) + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return "", fmt.Errorf("error updating ref %s", err) + } + + return newCommitSHA, nil +} + +func createProdBundlePullRequest(releaseType string) error { + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + base := latestRelease // Target branch for upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, getBranchName(releaseType, latestRelease)) + title := "Update version files to stage production bundle release" + body := "This pull request is responsible for updating the contents of 3 separate files in order to trigger the production bundle release pipeline" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} diff --git a/release/cli/cmd/prod-cli.go b/release/cli/cmd/prod-cli.go new file mode 100644 index 000000000000..c512af0378d0 --- /dev/null +++ b/release/cli/cmd/prod-cli.go @@ -0,0 +1,139 @@ +package cmd + +/* + what does this command do? + + this command is responsible for staging prod cli release + + A PR is then created originating from the forked repo targeting the upstream repo latest release branch + + changes are committed into branch depending on release type +*/ +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + prodCliReleaseNumPath = "release/triggers/eks-a-release/production/RELEASE_NUMBER" + prodCliReleaseVerPath = "release/triggers/eks-a-release/production/RELEASE_VERSION" +) + +// prodCliCmd represents the prodCli command +var prodCliCmd = &cobra.Command{ + Use: "prod-cli", + Short: "creates a PR containing a single commit updating the contents of 2 files intended for prod cli release", + Long: `Retrieves updated content for production : release_number and release_version. + Writes the updated changes to the two files and raises a PR with a single commit.`, + + Run: func(cmd *cobra.Command, args []string) { + updateAllProdCliFiles() + }, +} + +// runs both updates functions +func updateAllProdCliFiles() { + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + _, err := updateProdCliFiles(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } + + err = createProdCliPullRequest(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } +} + +func updateProdCliFiles(releaseType string) (string, error) { + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + releaseNumber := os.Getenv("RELEASE_NUMBER") + latestVersion := os.Getenv("LATEST_VERSION") + latestRelease := os.Getenv("LATEST_RELEASE") + + // Get the latest commit SHA from the appropriate branch + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) + if err != nil { + return "", fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(prodCliReleaseNumPath, "/")), Type: github.String("blob"), Content: github.String(string(releaseNumber)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(prodCliReleaseVerPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return "", fmt.Errorf("error creating tree %s", err) + } + + newTreeSHA := tree.GetSHA() + + // Create a new commit with all the changes + author := &github.CommitAuthor{ + Name: github.String("ibix16"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update version files for prod cli release"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return "", fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // Update the branch reference + ref.Object.SHA = github.String(newCommitSHA) + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return "", fmt.Errorf("error updating ref %s", err) + } + + return newCommitSHA, nil +} + +func createProdCliPullRequest(releaseType string) error { + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + base := latestRelease // Target branch for upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, getBranchName(releaseType, latestRelease)) + title := "Update version files to stage prod cli release" + body := "This pull request is responsible for updating the contents of 2 separate files in order to trigger the prod cli release pipeline" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} diff --git a/release/cli/cmd/stage-bundle.go b/release/cli/cmd/stage-bundle.go new file mode 100644 index 000000000000..e7b7663a36ff --- /dev/null +++ b/release/cli/cmd/stage-bundle.go @@ -0,0 +1,248 @@ +package cmd + +/* + what does this command do? + + this command is responsible for staging bundle release + + A PR is created originating from the forked repo targeting the upstream repo latest release branch + + changes are committed into branch depending on release type +*/ + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + bundleNumPath = "release/triggers/bundle-release/development/BUNDLE_NUMBER" + cliMaxVersionPath = "release/triggers/bundle-release/development/CLI_MAX_VERSION" + cliMinVersionPath = "release/triggers/bundle-release/development/CLI_MIN_VERSION" + //triggerFilePath = "release/triggers/eks-a-releaser-trigger" + usersForkedRepoAccount = getAuthenticatedUsername() +) + +// stageBundleCmd represents the stageBundle command +var stageBundleCmd = &cobra.Command{ + Use: "stage-bundle", + Short: "creates a PR containing 3 commits, each updating the contents of a singular file intended for staging bundle release", + Long: `Retrieves updated content for development : bundle number, cli max version, and cli min version. + Writes the updated changes to the 3 files and raises a PR with the 3 commits.`, + + Run: func(cmd *cobra.Command, args []string) { + + err := runAllStagebundle() + if err != nil { + log.Fatal(err) + } + }, +} + +func runAllStagebundle() error { + + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + commitSHA, err := updateFilesStageBundle(RELEASE_TYPE) + if err != nil { + return err + } + fmt.Print(commitSHA) + + err = createPullRequestStageBundleTwo(RELEASE_TYPE) + if err != nil { + return err + } + + return nil +} + +func updateFilesStageBundle(releaseType string) (string, error) { + + // create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // env variables + bundleNumber := os.Getenv("RELEASE_NUMBER") + latestVersion := os.Getenv("LATEST_VERSION") + latestRelease := os.Getenv("LATEST_RELEASE") + + // Get the latest commit SHA from the appropriate branch, patch vs minor + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) + if err != nil { + return "", fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(bundleNumPath, "/")), Type: github.String("blob"), Content: github.String(string(bundleNumber)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliMaxVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliMinVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return "", fmt.Errorf("error creating tree %s", err) + } + + newTreeSHA := tree.GetSHA() + + // Create a new commit with all the changes + author := &github.CommitAuthor{ + Name: github.String("ibix16"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update version files for bundle release"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return "", fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // Update the branch reference + ref.Object.SHA = github.String(newCommitSHA) + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return "", fmt.Errorf("error updating ref %s", err) + } + + return newCommitSHA, nil +} + +func createPullRequestStageBundleTwo(releaseType string) error { + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + base := latestRelease // Target branch for upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, getBranchName(releaseType, latestRelease)) + title := "Update version files to stage bundle release" + body := "This pull request is responsible for updating the contents of 3 separate files in order to trigger the staging bundle release pipeline" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} + +func getBranchName(releaseType, latestRelease string) string { + if releaseType == "minor" { + return latestRelease + } + return latestRelease + "-releaser-patch" +} + +// non related to staging bundle release +// User represents the user's GitHub account information. +type User struct { + Login string `json:"login"` + ID int `json:"id"` + NodeID string `json:"node_id"` + AvatarURL string `json:"avatar_url"` + GravatarID string `json:"gravatar_id"` + URL string `json:"url"` + HTMLURL string `json:"html_url"` + FollowersURL string `json:"followers_url"` + FollowingURL string `json:"following_url"` + GistsURL string `json:"gists_url"` + StarredURL string `json:"starred_url"` + SubscriptionsURL string `json:"subscriptions_url"` + OrganizationsURL string `json:"organizations_url"` + ReposURL string `json:"repos_url"` + EventsURL string `json:"events_url"` + ReceivedEventsURL string `json:"received_events_url"` + Type string `json:"type"` + SiteAdmin bool `json:"site_admin"` + Name string `json:"name"` + Company string `json:"company"` + Blog string `json:"blog"` + Location string `json:"location"` + Email string `json:"email"` + Hireable bool `json:"hireable"` + Bio string `json:"bio"` + TwitterUsername string `json:"twitter_username"` + PublicRepos int `json:"public_repos"` + PublicGists int `json:"public_gists"` + Followers int `json:"followers"` + Following int `json:"following"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + +func getAuthenticatedUsername() string { + + // username is fetched using gh PAT + accessToken := os.Getenv("SECRET_PAT") + // github PAT is retrieved from secrets manager / buildspec file + + // Create a new HTTP client + client := &http.Client{} + + // Create a new HTTP request + req, err := http.NewRequest("GET", "https://api.github.com/user", nil) + if err != nil { + return "error creating HTTP request" + } + + // Set the authorization header with the personal access token + req.Header.Set("Authorization", "token "+accessToken) + + // Send the HTTP request + resp, err := client.Do(req) + if err != nil { + return "error sending HTTP request" + } + defer resp.Body.Close() + + // Read the response body + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "error reading response body" + } + + // Check if the request was successful + if resp.StatusCode != http.StatusOK { + return "failed to retrieve user information" + } + + // Unmarshal the response body into a User struct + var user User + err = json.Unmarshal(body, &user) + if err != nil { + return "error unmarshalling" + } + + stringUser := user.Login + return stringUser +} diff --git a/release/cli/cmd/stage-cli.go b/release/cli/cmd/stage-cli.go new file mode 100644 index 000000000000..b7ef7ec27681 --- /dev/null +++ b/release/cli/cmd/stage-cli.go @@ -0,0 +1,140 @@ +package cmd + +/* + what does this command do? + + this command is responsible for staging cli release + + A PR is then created originating from the forked repo targeting the upstream repo latest release branch + + changes are committed into branch depending on release type +*/ +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + cliReleaseNumPath = "release/triggers/eks-a-release/development/RELEASE_NUMBER" + cliReleaseVerPath = "release/triggers/eks-a-release/development/RELEASE_VERSION" +) + +// stageCliCmd represents the stageCli command +var stageCliCmd = &cobra.Command{ + Use: "stage-cli", + Short: "creates a PR containing a single commit updating the contents of 2 files intended for staging cli release", + Long: `Retrieves updated content for development : release_number and release_version. + Writes the updated changes to the two files and raises a PR with a single commit.`, + + Run: func(cmd *cobra.Command, args []string) { + updateAllStageCliFiles() + }, +} + +// runs both update functions +func updateAllStageCliFiles() { + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + commitSHA, err := updateFilesStageCli(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } + fmt.Print(commitSHA) + + err = createPullRequestStageCli(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } +} + +func updateFilesStageCli(releaseType string) (string, error) { + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + releaseNumber := os.Getenv("RELEASE_NUMBER") + latestVersion := os.Getenv("LATEST_VERSION") + latestRelease := os.Getenv("LATEST_RELEASE") + + // Get the latest commit SHA from the appropriate branch + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) + if err != nil { + return "", fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliReleaseNumPath, "/")), Type: github.String("blob"), Content: github.String(string(releaseNumber)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliReleaseVerPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) + + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return "", fmt.Errorf("error creating tree %s", err) + } + + newTreeSHA := tree.GetSHA() + + // Create a new commit with all the changes + author := &github.CommitAuthor{ + Name: github.String("ibix16"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update version files for cli release"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return "", fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // Update the branch reference + ref.Object.SHA = github.String(newCommitSHA) + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return "", fmt.Errorf("error updating ref %s", err) + } + + return newCommitSHA, nil +} + +func createPullRequestStageCli(releaseType string) error { + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + base := latestRelease // Target branch for upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, getBranchName(releaseType, latestRelease)) + title := "Update version files to stage cli release" + body := "This pull request is responsible for updating the contents of 2 separate files in order to trigger the staging cli release pipeline" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} diff --git a/release/cli/cmd/trigger.go b/release/cli/cmd/trigger.go new file mode 100644 index 000000000000..eb840dd05e76 --- /dev/null +++ b/release/cli/cmd/trigger.go @@ -0,0 +1,31 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +// rootCmd represents the base command when called without any subcommands +var triggerCmd = &cobra.Command{ + Use: "trigger", + Short: "A brief description of your application", + Long: `A longer description that spans multiple lines and likely contains +examples and usage of using your application. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, +} + +func init() { + // rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + rootCmd.AddCommand(triggerCmd) + triggerCmd.AddCommand(updateMakefileCmd) + triggerCmd.AddCommand(updateProwCmd) + triggerCmd.AddCommand(stageBundleCmd) + triggerCmd.AddCommand(stageCliCmd) + triggerCmd.AddCommand(prodBundleCmd) + triggerCmd.AddCommand(prodCliCmd) + triggerCmd.AddCommand(createBranchCmd) + triggerCmd.AddCommand(updateHomebrewCmd) + triggerCmd.AddCommand(createReleaseCmd) +} diff --git a/release/cli/cmd/update-homebrew.go b/release/cli/cmd/update-homebrew.go new file mode 100644 index 000000000000..c9d1bcaf36c1 --- /dev/null +++ b/release/cli/cmd/update-homebrew.go @@ -0,0 +1,156 @@ +package cmd + +/* + what does this command do? + + this command is responsible for updating the homebrew file + + A PR is then created originating from the forked repo targeting the upstream repo latest release branch + + changes are committed into branch depending on release type +*/ +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + homebrewPath = "release/triggers/brew-version-release/CLI_RELEASE_VERSION" +) + +// updateHomebrewCmd represents the updateHomebrew command +var updateHomebrewCmd = &cobra.Command{ + Use: "update-homebrew", + Short: "Updates homebrew with latest version in eks-a-releaser branch, PR targets release branch", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command.`, + + Run: func(cmd *cobra.Command, args []string) { + runAllHomebrew() + }, +} + +func runAllHomebrew() { + RELEASE_TYPE := os.Getenv("RELEASE_TYPE") + + _, err := updateHomebrew(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } + + err = createPullRequestHomebrew(RELEASE_TYPE) + if err != nil { + log.Panic(err) + } +} + +func updateHomebrew(releaseType string) (string, error) { + + // env variables + latestVersionValue := os.Getenv("LATEST_VERSION") + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + opts := &github.RepositoryContentGetOptions{ + Ref: "main", // Specific branch to check for homebrew file + } + + // Access homebrew file + FileContentBundleNumber, _, _, err := client.Repositories.GetContents(ctx, usersForkedRepoAccount, EKSAnyrepoName, homebrewPath, opts) + if err != nil { + fmt.Print("first breakpoint", err) + } + + // Holds content of homebrew cli version file + content, err := FileContentBundleNumber.GetContent() + if err != nil { + fmt.Print("second breakpoint", err) + } + + // Update instances of previous release with new + updatedFile := strings.ReplaceAll(content, content, latestVersionValue) + + // Get the latest commit SHA from the appropriate branch + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) + if err != nil { + return "", fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(homebrewPath, "/")), Type: github.String("blob"), Content: github.String(string(updatedFile)), Mode: github.String("100644")}) + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return "", fmt.Errorf("error creating tree %s", err) + } + + newTreeSHA := tree.GetSHA() + + // Create a new commit + author := &github.CommitAuthor{ + Name: github.String("ibix16"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update brew-version value to point to new release"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return "", fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // Update the branch reference + ref.Object.SHA = github.String(newCommitSHA) + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return "", fmt.Errorf("error updating ref %s", err) + } + + return newCommitSHA, nil +} + +func createPullRequestHomebrew(releaseType string) error { + latestRelease := os.Getenv("LATEST_RELEASE") + + // Create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + base := latestRelease // Target branch for upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, getBranchName(releaseType, latestRelease)) + title := "Update homebrew cli version value to point to new release" + body := "This pull request is responsible for updating the contents of the home brew cli version file" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} diff --git a/release/cli/cmd/update-makefile.go b/release/cli/cmd/update-makefile.go new file mode 100644 index 000000000000..4641076879a1 --- /dev/null +++ b/release/cli/cmd/update-makefile.go @@ -0,0 +1,156 @@ +package cmd + +/* + what does this command do? + + this command is responsible for accessing and updating the Makefile with the latest release value + + the updated makefile is committed to the latest release branch, forked repo + + and a pull request is raised targeting the upstream repo latest release branch +*/ + +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + EKSAnyrepoName = "eks-anywhere" + makeFilePath = "/Makefile" +) + +// upMakeFileCmd represents the upMakeFile command +var updateMakefileCmd = &cobra.Command{ + Use: "update-makefile", + Short: "Updates BRANCH_NAME?= variable to match new release branch within the Makefile", + Long: `A longer description.`, + + Run: func(cmd *cobra.Command, args []string) { + content := updateMakefile() + fmt.Print(content) + }, +} + +func updateMakefile() error { + + // create client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // string variable holding latest release from env "release-0.xx" + latestRelease := os.Getenv("LATEST_RELEASE") + + opts := &github.RepositoryContentGetOptions{ + Ref: "main", // branch that will be accessed + } + + // access makefile in forked repo and retrieve entire file contents + triggerFileContentBundleNumber, _, _, err := client.Repositories.GetContents(ctx, usersForkedRepoAccount, EKSAnyrepoName, makeFilePath, opts) + if err != nil { + fmt.Print("first breakpoint", err) + } + // holds makefile + content, err := triggerFileContentBundleNumber.GetContent() + if err != nil { + fmt.Print("second breakpoint", err) + } + + // stores entire updated Makefile as a string + updatedContent := returnUpdatedMakeFile(content, latestRelease) + + // get latest commit sha from latest release branch + ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+latestRelease) + if err != nil { + return fmt.Errorf("error getting ref %s", err) + } + latestCommitSha := ref.Object.GetSHA() + + entries := []*github.TreeEntry{} + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(makeFilePath, "/")), Type: github.String("blob"), Content: github.String(string(updatedContent)), Mode: github.String("100644")}) + tree, _, err := client.Git.CreateTree(ctx, usersForkedRepoAccount, EKSAnyrepoName, *ref.Object.SHA, entries) + if err != nil { + return fmt.Errorf("error creating tree %s", err) + } + + //validate tree sha + newTreeSHA := tree.GetSHA() + + // create new commit, update email address + author := &github.CommitAuthor{ + Name: github.String("ibix16"), + Email: github.String("fake@wtv.com"), + } + + commit := &github.Commit{ + Message: github.String("Update Makefile"), + Tree: &github.Tree{SHA: github.String(newTreeSHA)}, + Author: author, + Parents: []*github.Commit{{SHA: github.String(latestCommitSha)}}, + } + + commitOP := &github.CreateCommitOptions{} + newCommit, _, err := client.Git.CreateCommit(ctx, usersForkedRepoAccount, EKSAnyrepoName, commit, commitOP) + if err != nil { + return fmt.Errorf("creating commit %s", err) + } + newCommitSHA := newCommit.GetSHA() + + // update branch reference + ref.Object.SHA = github.String(newCommitSHA) + + _, _, err = client.Git.UpdateRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, ref, false) + if err != nil { + return fmt.Errorf("error updating ref %s", err) + } + + // create pull request + base := latestRelease // branch PR will be merged into + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, latestRelease) + title := "Updates Makefile to point to new release" + body := "This pull request is responsible for updating the contents of the Makefile" + + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, EKSAnyrepoName, newPR) + if err != nil { + return fmt.Errorf("error creating PR %s", err) + } + + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil + +} + +// updates Makefile with new release, returns entire file updated +func returnUpdatedMakeFile(fileContent, newRelease string) string { + snippetStartIdentifierB := "BRANCH_NAME?=" + lines := strings.Split(fileContent, "\n") + var updatedLines []string + + for _, line := range lines { + if strings.Contains(line, snippetStartIdentifierB) { + parts := strings.Split(line, "=") + varNamePart := parts[0] // holds "BRANCH_NAME?" + updatedLine := varNamePart + "=" + newRelease + updatedLines = append(updatedLines, updatedLine) + } else { + updatedLines = append(updatedLines, line) + } + } + + return strings.Join(updatedLines, "\n") + +} diff --git a/release/cli/cmd/update-prow.go b/release/cli/cmd/update-prow.go new file mode 100644 index 000000000000..86b7b94f3422 --- /dev/null +++ b/release/cli/cmd/update-prow.go @@ -0,0 +1,306 @@ +package cmd + +/* + what does this command do? + + (1) creates a folder on user's Desktop + (2) clones github prow repo (update account name) + (3) Renames templater file and updates contents + (4) executes make command + (5) creates a branch on user's fork of prow repo + (6) stages, commits, and pushes changes to newly created branch + (7) creates PR targeting upstream "main" branch + + Only command to include local cloning of repo +*/ + +import ( + "context" + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "time" + + "github.com/aws/eks-anywhere-build-tooling/tools/version-tracker/pkg/util/command" + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/config" + "github.com/go-git/go-git/v5/plumbing/object" + "github.com/go-git/go-git/v5/plumbing/transport/http" + "github.com/google/go-github/v62/github" + "github.com/spf13/cobra" +) + +var ( + prowRepo = "eks-anywhere-prow-jobs" +) + +// upProwCmd represents the upProw command +var updateProwCmd = &cobra.Command{ + Use: "update-prow", + Short: "accesses prow-jobs repo and updates version files", + Long: `A`, + Run: func(cmd *cobra.Command, args []string) { + updateProw() + }, +} + +func updateProw() { + + latestRelease := os.Getenv("LATEST_RELEASE") + + // Step 1: Create a folder on the user's desktop + homeDir, err := os.UserHomeDir() + if err != nil { + fmt.Printf("error getting user home directory: %v", err) + return + } + desktopPath := filepath.Join(homeDir, "Desktop") + newFolderPath := filepath.Join(desktopPath, "ProwJobsRepo") + err = os.Mkdir(newFolderPath, 0755) + if err != nil { + fmt.Println("Error creating folder:", err) + return + } + fmt.Println("Folder created successfully at:", newFolderPath) + + //clones github repo into newly created folder + clonedRepoDestination := filepath.Join(homeDir, "Desktop", "ProwJobsRepo") + repo, err := cloneRepo("https://github.com/ibix16/eks-anywhere-prow-jobs", clonedRepoDestination) + if err != nil { + fmt.Printf("error cloning repo: %v", err) + return + } + + // Step 2: Rename the file with the latest version + originalFilePath, err := retrieveFilePath(clonedRepoDestination + "/templater/jobs/periodic/eks-anywhere-build-tooling") + if err != nil { + fmt.Printf("error fetching path to file on cloned repo: %v", err) + } + newFilePath := clonedRepoDestination + "/templater/jobs/periodic/eks-anywhere-build-tooling/eks-anywhere-attribution-periodics-" + latestRelease + ".yaml" + err = os.Rename(originalFilePath, newFilePath) + if err != nil { + fmt.Printf("error renaming file: %v", err) + return + } + + // Step 3: Update file contents + convertedRelease := strings.Replace(latestRelease, ".", "-", 1) + content, err := ioutil.ReadFile(newFilePath) + if err != nil { + log.Fatalf("Failed to read file: %v", err) + } + releasePattern := regexp.MustCompile(`release-0\.\d+\d+`) + jobNamePattern := regexp.MustCompile(`release-0-\d+\d+`) + updatedContent := releasePattern.ReplaceAllString(string(content), latestRelease) + updatedContent = jobNamePattern.ReplaceAllString(updatedContent, convertedRelease) + err = ioutil.WriteFile(newFilePath, []byte(updatedContent), 0644) + if err != nil { + log.Fatalf("Failed to write file: %v", err) + } + fmt.Println("File updated successfully.") + + // Execute make command + err = makeCommand() + if err != nil { + fmt.Printf("error running make command: %v", err) + return + } + fmt.Println("Make command executed successfully.") + + // Create a branch in the user's forked repo + err = createProwBranch(usersForkedRepoAccount, prowRepo) + if err != nil { + fmt.Printf("error creating branch: %v", err) + return + } + + // Commit and push changes to the branch + err = commitAndPushChanges(repo, latestRelease+"-releaser") + if err != nil { + fmt.Printf("error pushing changes to branch: %v", err) + return + } + fmt.Println("Changes pushed successfully.") + + // Create PR + err = createProwPr() + if err != nil { + fmt.Printf("error creating PR: %v", err) + return + } + + // delete folder + err = os.RemoveAll(clonedRepoDestination) + if err != nil { + fmt.Printf("error deleting folder: %s", err) + } + + fmt.Println("Folder deleted successfully from desktop.") + +} + +// return full system file path to templater file on cloned repo +func retrieveFilePath(directory string) (string, error) { + var filePath string + err := filepath.Walk(directory, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err // Return the error immediately + } + if !info.IsDir() && strings.Contains(info.Name(), "release-0.") { + filePath = path + return nil // Stop walking after finding the first matching file + } + return nil + }) + if err != nil { + return "", err // Return the error if one occurred during the walk + } + if filePath == "" { + return "", fmt.Errorf("no file found with 'release-0.' in its name") + } + return filePath, nil +} + +// clones prow jobs repo on local machine destination +func cloneRepo(cloneURL, destination string) (*git.Repository, error) { + repo, err := git.PlainClone(destination, false, &git.CloneOptions{ + URL: cloneURL, + Progress: os.Stdout, + }) + if err != nil { + if err == git.ErrRepositoryAlreadyExists { + fmt.Printf("Repo already exists at %s\n", destination) + repo, err = git.PlainOpen(destination) + if err != nil { + return nil, fmt.Errorf("opening repo from %s directory: %v", destination, err) + } + } else { + return nil, fmt.Errorf("cloning repo %s to %s directory: %v", cloneURL, destination, err) + } + } + return repo, nil +} + +// function to execute make command located within templater dir +func makeCommand() error { + desktopPath, err := os.UserHomeDir() + if err != nil { + fmt.Printf("error getting user home directory: %v", err) + return nil + } + clonedRepoPath := filepath.Join(desktopPath, "Desktop", "ProwJobsRepo") + templaterDirPath := filepath.Join(clonedRepoPath, "templater") + updateProwJobsCommandSequence := fmt.Sprintf("make prowjobs -C %s", templaterDirPath) + updateProwJobsCmd := exec.Command("bash", "-c", updateProwJobsCommandSequence) + _, err = command.ExecCommand(updateProwJobsCmd) + if err != nil { + return fmt.Errorf("running make prowjobs command: %v", err) + } + return nil +} + +func createProwBranch(owner, repo string) error { + + latestRelease := os.Getenv("LATEST_RELEASE") + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // Get the latest commit on the "main" branch + mainBranch, _, err := client.Git.GetRef(ctx, owner, repo, "refs/heads/main") + if err != nil { + return fmt.Errorf("failed to get 'main' branch: %v", err) + } + latestCommit, _, err := client.Git.GetCommit(ctx, owner, repo, *mainBranch.Object.SHA) + if err != nil { + return fmt.Errorf("failed to get latest commit: %v", err) + } + // Create a new reference for the branch + newRef := &github.Reference{ + Ref: github.String("refs/heads/" + latestRelease + "-releaser"), + Object: &github.GitObject{ + SHA: latestCommit.SHA, + }, + } + // Create the new branch + _, _, err = client.Git.CreateRef(ctx, owner, repo, newRef) + if err != nil { + return fmt.Errorf("failed to create 'releaser' branch: %v", err) + } + fmt.Println("Branch created successfully") + return nil +} + +// Commits and pushes the changes to the new branch +func commitAndPushChanges(repo *git.Repository, branchName string) error { + + w, err := repo.Worktree() + if err != nil { + return fmt.Errorf("could not get worktree: %v", err) + } + // Stage all changes + err = w.AddGlob(".") + if err != nil { + return fmt.Errorf("could not stage changes: %v", err) + } + // Commit changes + _, err = w.Commit("Update prow jobs for "+branchName, &git.CommitOptions{ + Author: &object.Signature{ + Name: "your-github-username", // Update with your GitHub username + When: time.Now(), + }, + }) + if err != nil { + return fmt.Errorf("could not commit changes: %v", err) + } + // Push changes to the new branch + accessToken := os.Getenv("SECRET_PAT") + err = repo.Push(&git.PushOptions{ + RemoteName: "origin", + Auth: &http.BasicAuth{ + Username: "your-github-username", // Update with your GitHub username + Password: accessToken, // GitHub personal access token + }, + RefSpecs: []config.RefSpec{ + config.RefSpec("refs/heads/main" + ":refs/heads/" + branchName), + }, + }) + if err != nil { + return fmt.Errorf("could not push changes: %v", err) + } + return nil +} + +// Function to create the PR +func createProwPr() error { + + latestRelease := os.Getenv("LATEST_RELEASE") + // Create a GitHub client + accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() + client := github.NewClient(nil).WithAuthToken(accessToken) + + // Create a PR from this branch + branchName := latestRelease + "-releaser" + base := "main" // target branch in upstream repo + head := fmt.Sprintf("%s:%s", usersForkedRepoAccount, branchName) // PR originates from + title := "Update Prow Jobs Templater file & execute make command" + body := "This pull request contains the most recent commit from the release branch." + newPR := &github.NewPullRequest{ + Title: &title, + Head: &head, + Base: &base, + Body: &body, + } + pr, _, err := client.PullRequests.Create(ctx, upStreamRepoOwner, prowRepo, newPR) + if err != nil { + return fmt.Errorf("error creating PR: %s", err) + } + log.Printf("Pull request created: %s\n", pr.GetHTMLURL()) + return nil +} diff --git a/release/cli/go.mod b/release/cli/go.mod index ff852dcf946b..46c77faf7533 100644 --- a/release/cli/go.mod +++ b/release/cli/go.mod @@ -5,16 +5,20 @@ go 1.22.4 require ( github.com/aws/aws-sdk-go v1.54.12 github.com/aws/aws-sdk-go-v2 v1.30.1 - github.com/aws/eks-anywhere v0.18.0 - github.com/aws/eks-distro-build-tooling/release v0.0.0-20211103003257-a7e2379eae5e + github.com/aws/eks-anywhere v0.18.3 + github.com/aws/eks-anywhere-build-tooling/tools/version-tracker v0.0.0-20240815210949-837386fac62f + github.com/aws/eks-distro-build-tooling/release v0.0.0-20240513204929-c69ded04ed10 github.com/fsouza/go-dockerclient v1.11.0 github.com/ghodss/yaml v1.0.0 + github.com/go-git/go-git/v5 v5.11.0 github.com/go-logr/logr v1.4.2 + github.com/google/go-github/v62 v62.0.0 github.com/mitchellh/go-homedir v1.1.0 github.com/onsi/gomega v1.33.1 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 + golang.org/x/oauth2 v0.21.0 golang.org/x/sync v0.7.0 helm.sh/helm/v3 v3.15.1 k8s.io/apimachinery v0.30.2 @@ -24,6 +28,7 @@ require ( ) require ( + dario.cat/mergo v1.0.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect @@ -35,11 +40,13 @@ require ( github.com/Masterminds/squirrel v1.5.4 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect github.com/aws/smithy-go v1.20.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -53,6 +60,7 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect @@ -60,8 +68,11 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-errors/errors v1.4.2 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-logr/zapr v1.3.0 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect @@ -72,6 +83,7 @@ require ( github.com/google/btree v1.0.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect @@ -85,10 +97,12 @@ require ( github.com/huandu/xstrings v1.4.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmoiron/sqlx v1.3.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.2 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect @@ -120,6 +134,7 @@ require ( github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.45.0 // indirect @@ -128,13 +143,16 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sergi/go-diff v1.2.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect @@ -145,11 +163,11 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect @@ -161,6 +179,7 @@ require ( google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.30.1 // indirect diff --git a/release/cli/go.sum b/release/cli/go.sum index c8151e027646..91998c812d81 100644 --- a/release/cli/go.sum +++ b/release/cli/go.sum @@ -1,22 +1,13 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= @@ -32,44 +23,37 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/aws/aws-sdk-go v1.38.40/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.54.12 h1:xPDB+GSBZq0rJbmDZF+EyfMbnWRyfEPcn7PZ7bJjXSw= github.com/aws/aws-sdk-go v1.54.12/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/eks-distro-build-tooling/release v0.0.0-20211103003257-a7e2379eae5e h1:GB6Cn9yKEt31mDF7RrVWyM9WoppNkGYth8zBPIJGJ+w= -github.com/aws/eks-distro-build-tooling/release v0.0.0-20211103003257-a7e2379eae5e/go.mod h1:p/KHVJAMv3kofnUnShkZ6pUnZYzm+LK2G7bIi8nnTKA= +github.com/aws/eks-anywhere-build-tooling/tools/version-tracker v0.0.0-20240815210949-837386fac62f h1:B1a0y5GJfqPdwphOgmeLIZxkfgV+fUPRcBi0AgPdhCk= +github.com/aws/eks-anywhere-build-tooling/tools/version-tracker v0.0.0-20240815210949-837386fac62f/go.mod h1:Cz5iit1QmzfRJqsIOC5SBjwdaIzgRVQN9O/du+FSmIU= +github.com/aws/eks-distro-build-tooling/release v0.0.0-20240513204929-c69ded04ed10 h1:tHMJTH65peauXPtaF/NRhgxhQU8gIOcbEpmLlv3l5EI= +github.com/aws/eks-distro-build-tooling/release v0.0.0-20240513204929-c69ded04ed10/go.mod h1:NzE2uGUGDDkCIcZh+xxbq1SBHsEu1AR9QT3lpKPZXRc= github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= @@ -78,6 +62,7 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembj github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -87,7 +72,9 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= @@ -96,29 +83,16 @@ github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= @@ -127,7 +101,6 @@ github.com/docker/cli v27.0.3+incompatible h1:usGs0/BoBW8MWxGeEtqPMkzOY56jZ6kYlS github.com/docker/cli v27.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= @@ -138,32 +111,24 @@ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -172,81 +137,42 @@ github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6 github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsouza/go-dockerclient v1.11.0 h1:4ZAk6W7rPAtPXm7198EFqA5S68rwnNQORxlOA5OurCA= github.com/fsouza/go-dockerclient v1.11.0/go.mod h1:0I3TQCRseuPTzqlY4Y3ajfsg2VAdMQoazrkxJTiJg8s= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -262,18 +188,12 @@ github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXs github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -287,8 +207,6 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= @@ -299,33 +217,28 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4= +github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -333,53 +246,42 @@ github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= @@ -391,7 +293,6 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -404,15 +305,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= @@ -421,14 +315,11 @@ github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= @@ -446,7 +337,6 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -469,7 +359,6 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -478,48 +367,35 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo/v2 v2.17.2 h1:7eMhcy3GimbsA3hEnVKdw/PQM9XN9krpKVXsZdph0/g= github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= @@ -539,61 +415,46 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -607,11 +468,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -619,10 +477,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -632,12 +488,6 @@ github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMzt github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= @@ -650,103 +500,77 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -754,74 +578,57 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= @@ -837,20 +644,15 @@ google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGm google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -862,61 +664,38 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= helm.sh/helm/v3 v3.15.1 h1:22ztacHz4gMqhXNqCQ9NAg6BFWoRUryNLvnkz6OVyw0= helm.sh/helm/v3 v3.15.1/go.mod h1:fvfoRcB8UKRUV5jrIfOTaN/pG1TPhuqSb56fjYdTKXg= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY= k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM= -k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= k8s.io/apiextensions-apiserver v0.30.1 h1:4fAJZ9985BmpJG6PkoxVRpXv9vmPUOVzl614xarePws= k8s.io/apiextensions-apiserver v0.30.1/go.mod h1:R4GuSrlhgq43oRY9sF2IToFh7PVlF1JjfWdoG3pixk4= -k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= k8s.io/apiserver v0.30.1 h1:BEWEe8bzS12nMtDKXzCF5Q5ovp6LjjYkSp8qOPk8LZ8= k8s.io/apiserver v0.30.1/go.mod h1:i87ZnQ+/PGAmSbD/iEKM68bm1D5reX8fO4Ito4B01mo= k8s.io/cli-runtime v0.30.0 h1:0vn6/XhOvn1RJ2KJOC6IRR2CGqrpT6QQF4+8pYpWQ48= k8s.io/cli-runtime v0.30.0/go.mod h1:vATpDMATVTMA79sZ0YUCzlMelf6rUjoBzlp+RnoM+cg= -k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q= k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc= -k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= k8s.io/component-base v0.30.1 h1:bvAtlPh1UrdaZL20D9+sWxsJljMi0QZ3Lmw+kmZAaxQ= k8s.io/component-base v0.30.1/go.mod h1:e/X9kDiOebwlI41AvBHuWdqFriSRrX50CdwA9TFaHLI= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao= k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/kubectl v0.30.0 h1:xbPvzagbJ6RNYVMVuiHArC1grrV5vSmmIcSZuCdzRyk= k8s.io/kubectl v0.30.0/go.mod h1:zgolRw2MQXLPwmic2l/+iHs239L49fhSeICuMhQQXTI= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/controller-runtime v0.5.0/go.mod h1:REiJzC7Y00U+2YkMbT8wxgrsX5USpXKGhb2sCtAXiT8= sigs.k8s.io/controller-runtime v0.18.4 h1:87+guW1zhvuPLh1PHybKdYFLU0YJp4FhJRmiHvm5BZw= sigs.k8s.io/controller-runtime v0.18.4/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= @@ -925,10 +704,7 @@ sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKU sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 4c4a633a66b91d27dac5bd50ec04674d224293ad Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:16:13 -0700 Subject: [PATCH 02/21] Update go-build-binary.yml --- .../buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 162bf085951c..1120d70ff624 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -10,5 +10,5 @@ phases: - make dev-release -C release artifacts: - files: - - release/bin/eks-anywhere-release \ No newline at end of file + files: + - release/bin/eks-anywhere-release From 98146b4635b0fd429cddbae531547a3d6f40450f Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:17:44 -0700 Subject: [PATCH 03/21] Update go-build-binary.yml --- .../eks-a-releaser-buildspec/go-build-binary.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 1120d70ff624..54f6a05d2754 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -1,14 +1,12 @@ +--- version: 0.2 - phases: pre_build: commands: - - ./release/scripts/setup.sh - + - ./release/scripts/setup.sh build: commands: - - make dev-release -C release - + - make dev-release -C release artifacts: files: - release/bin/eks-anywhere-release From ea696d0b4aea47b15a844fda5c53e8c3fa0e273c Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:19:02 -0700 Subject: [PATCH 04/21] Update go-build-binary.yml --- .../eks-a-releaser-buildspec/go-build-binary.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 54f6a05d2754..1ea636309d48 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -1,12 +1,14 @@ ---- version: 0.2 + phases: pre_build: commands: - ./release/scripts/setup.sh + build: commands: - make dev-release -C release - artifacts: - files: - - release/bin/eks-anywhere-release + +artifacts: + files: + - release/bin/eks-anywhere-release From 99cc20811774fbef73fb31546eccda41be7209f7 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:32:06 -0700 Subject: [PATCH 05/21] Update create-branch.go --- release/cli/cmd/create-branch.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/release/cli/cmd/create-branch.go b/release/cli/cmd/create-branch.go index 76c295caeea0..eb3467233118 100644 --- a/release/cli/cmd/create-branch.go +++ b/release/cli/cmd/create-branch.go @@ -16,6 +16,7 @@ package cmd import ( "context" "fmt" + "log" "os" "github.com/google/go-github/v62/github" @@ -25,6 +26,11 @@ import ( var ( buildToolingRepoName = "eks-anywhere-build-tooling" upStreamRepoOwner = "testerIbix" // will eventually be replaced by actual upstream owner, aws + latestRelease = os.Getenv("LATEST_RELEASE") + RELEASE_TYPE = os.Getenv("RELEASE_TYPE") + latestVersion = os.Getenv("LATEST_VERSION") + releaseNumber = os.Getenv("RELEASE_NUMBER") + accessToken = os.Getenv("SECRET_PAT") ) // createBranchCmd represents the createBranch command @@ -38,33 +44,32 @@ and usage of using your command.`, err := releaseDecision() if err != nil { - fmt.Printf("error creating branch %s", err) + log.Printf("error creating branch %s", err) } }, } func releaseDecision() error { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") if RELEASE_TYPE == "minor" { err := createMinorBranches() if err != nil { - fmt.Printf("error calling createMinorBranches %s", err) + log.Printf("error calling createMinorBranches %s", err) + return err } return nil } // else err := createPatchBranch() if err != nil { - fmt.Printf("error calling createPatchBranch %s", err) + log.Printf("error calling createPatchBranch %s", err) + return err } return nil } func createMinorBranches() error { - latestRelease := os.Getenv("LATEST_RELEASE") - //create client accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() @@ -92,7 +97,7 @@ func createMinorBranches() error { } // branch created upstream - fmt.Printf("New release branch '%s' created upstream successfully\n", *newBranchRef.Ref) + log.Printf("New release branch '%s' created upstream successfully\n", *newBranchRef.Ref) // create branch in forked repo based off upstream ref = "refs/heads/" + latestRelease @@ -116,7 +121,7 @@ func createMinorBranches() error { } // branch created upstream - fmt.Printf("New user fork branch '%s' created successfully\n", *newBranchRef.Ref) + log.Printf("New user fork branch '%s' created successfully\n", *newBranchRef.Ref) // create branch in upstream build tooling repo based off main branch ref = "refs/heads/" + latestRelease @@ -140,15 +145,13 @@ func createMinorBranches() error { } // branch created upstream - fmt.Printf("New build tooling branch '%s' created successfully\n", *newBranchRef.Ref) + log.Printf("New build tooling branch '%s' created successfully\n", *newBranchRef.Ref) return nil } func createPatchBranch() error { - latestRelease := os.Getenv("LATEST_RELEASE") - //create client accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() @@ -176,7 +179,7 @@ func createPatchBranch() error { } // branch created upstream - fmt.Printf("New branch '%s' created successfully\n", *newBranchRef.Ref) + log.Printf("New branch '%s' created successfully\n", *newBranchRef.Ref) return nil } From af7bc6882c121609a02c175dc21fb160b237c06c Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:32:53 -0700 Subject: [PATCH 06/21] Update create-release.go --- release/cli/cmd/create-release.go | 61 ++++++++++++------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/release/cli/cmd/create-release.go b/release/cli/cmd/create-release.go index e02c88afd842..9c9dce4a5b46 100644 --- a/release/cli/cmd/create-release.go +++ b/release/cli/cmd/create-release.go @@ -10,9 +10,7 @@ package cmd import ( "context" - "fmt" "log" - "os" "github.com/google/go-github/v62/github" "github.com/spf13/cobra" @@ -22,9 +20,9 @@ import ( // createReleaseCmd represents the createRelease command var createReleaseCmd = &cobra.Command{ Use: "create-release", - Short: "A brief description of your command", - Long: `A longer description that spans multiple lines and likely contains examples -and usage of using your command.`, + Short: "this command is responsible for creating a release tag with the commit hash that triggered the prod CLI release", + Long: `this command is responsible for creating a release tag with the commit hash that triggered the prod CLI release + depending on release type, either minor or patch branch will be checked to retrieve commit hash.`, Run: func(cmd *cobra.Command, args []string) { runBothTag() @@ -33,10 +31,11 @@ and usage of using your command.`, func runBothTag() { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") - //retrieve commit hash - commitHash := retrieveLatestProdCLIHash(RELEASE_TYPE) + commitHash, HashErr := retrieveLatestProdCLIHash(RELEASE_TYPE) + if HashErr != nil { + log.Panic(HashErr) + } //create tag with commit hash tag, errOne := createTag(commitHash) @@ -49,20 +48,14 @@ func runBothTag() { log.Panic(errTwo) } - //print release object - fmt.Print(rel) + //log release object + log.Print(rel) } // creates tag using retrieved commit hash func createTag(commitHash string) (*github.RepositoryRelease, error) { - // retrieve tag name "v0.0.00" - latestVersionValue := os.Getenv("LATEST_VERSION") - - //create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() - // Create a new GitHub client instance with the token type set to "Bearer" ts := oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: accessToken, @@ -71,8 +64,8 @@ func createTag(commitHash string) (*github.RepositoryRelease, error) { tc := oauth2.NewClient(ctx, ts) client := github.NewClient(tc) - releaseName := latestVersionValue - releaseDesc := latestVersionValue //"EKS-Anywhere " + latestVersionValue + " release" + releaseName := latestVersion + releaseDesc := latestVersion //"EKS-Anywhere " + latestVersionValue + " release" commitSHA := commitHash release := &github.RepositoryRelease{ TagName: github.String(releaseName), @@ -83,20 +76,18 @@ func createTag(commitHash string) (*github.RepositoryRelease, error) { rel, _, err := client.Repositories.CreateRelease(ctx, upStreamRepoOwner, EKSAnyrepoName, release) if err != nil { - fmt.Printf("error creating release: %v", err) + log.Printf("error creating release: %v", err) } - fmt.Printf("Release tag %s created successfully!\n", rel.GetTagName()) + log.Printf("Release tag %s created successfully!\n", rel.GetTagName()) return rel, nil } -func retrieveLatestProdCLIHash(releaseType string) string { - latestRelease := os.Getenv("LATEST_RELEASE") +func retrieveLatestProdCLIHash(releaseType string) (string, error) { if releaseType == "minor" { //create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) @@ -107,21 +98,20 @@ func retrieveLatestProdCLIHash(releaseType string) string { commits, _, err := client.Repositories.ListCommits(ctx, usersForkedRepoAccount, EKSAnyrepoName, opts) if err != nil { - return "error fetching commits list" + return "error fetching commits list: ", err } if len(commits) > 0 { latestCommit := commits[0] - return latestCommit.GetSHA() + return latestCommit.GetSHA(), nil } - return "no commits found for file" + return "no commits found for file", nil } // else //create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) @@ -132,36 +122,33 @@ func retrieveLatestProdCLIHash(releaseType string) string { commits, _, err := client.Repositories.ListCommits(ctx, usersForkedRepoAccount, EKSAnyrepoName, opts) if err != nil { - return "error fetching commits list" + return "error fetching commits list: ", err } if len(commits) > 0 { latestCommit := commits[0] - return latestCommit.GetSHA() + return latestCommit.GetSHA(), nil } - return "no commits found for file" + return "no commits found for file", nil } func createGitHubRelease(releaseTag *github.RepositoryRelease) (*github.RepositoryRelease, error) { - latestVersionValue := os.Getenv("LATEST_VERSION") - //create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) - release, _, err := client.Repositories.GetReleaseByTag(ctx, upStreamRepoOwner, EKSAnyrepoName, latestVersionValue) - if err == nil { - fmt.Printf("Release %s already exists!\n", latestVersionValue) + release, _, err := client.Repositories.GetReleaseByTag(ctx, upStreamRepoOwner, EKSAnyrepoName, latestVersion) + if err != nil { + log.Printf("Release %s already exists!\n", latestVersion) return release, nil } release = &github.RepositoryRelease{ TagName: releaseTag.TagName, - Name: &latestVersionValue, + Name: &latestVersion, Body: releaseTag.Body, } From a8de66427b339fcff998ac302a78bce0c458aaac Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:33:37 -0700 Subject: [PATCH 07/21] Update prod-bundle.go --- release/cli/cmd/prod-bundle.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/release/cli/cmd/prod-bundle.go b/release/cli/cmd/prod-bundle.go index 4498a6d7cc0e..9c242209f564 100644 --- a/release/cli/cmd/prod-bundle.go +++ b/release/cli/cmd/prod-bundle.go @@ -42,7 +42,6 @@ var prodBundleCmd = &cobra.Command{ } func updateAllProdBundleFiles() error { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") _, err := updateProdBundleFiles(RELEASE_TYPE) if err != nil { @@ -58,13 +57,11 @@ func updateAllProdBundleFiles() error { } func updateProdBundleFiles(releaseType string) (string, error) { - accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) bundleNumber := os.Getenv("RELEASE_NUMBER") - latestVersion := os.Getenv("LATEST_VERSION") - latestRelease := os.Getenv("LATEST_RELEASE") // Get the latest commit SHA from the appropriate branch ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) @@ -116,10 +113,8 @@ func updateProdBundleFiles(releaseType string) (string, error) { } func createProdBundlePullRequest(releaseType string) error { - latestRelease := os.Getenv("LATEST_RELEASE") // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) From 3af8b06bb147fcd0c2adda02fbca74d842ab2465 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:34:08 -0700 Subject: [PATCH 08/21] Update prod-cli.go --- release/cli/cmd/prod-cli.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/release/cli/cmd/prod-cli.go b/release/cli/cmd/prod-cli.go index c512af0378d0..e363fe52fadc 100644 --- a/release/cli/cmd/prod-cli.go +++ b/release/cli/cmd/prod-cli.go @@ -13,7 +13,6 @@ import ( "context" "fmt" "log" - "os" "strings" "github.com/google/go-github/v62/github" @@ -39,7 +38,6 @@ var prodCliCmd = &cobra.Command{ // runs both updates functions func updateAllProdCliFiles() { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") _, err := updateProdCliFiles(RELEASE_TYPE) if err != nil { @@ -53,14 +51,10 @@ func updateAllProdCliFiles() { } func updateProdCliFiles(releaseType string) (string, error) { - accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) - releaseNumber := os.Getenv("RELEASE_NUMBER") - latestVersion := os.Getenv("LATEST_VERSION") - latestRelease := os.Getenv("LATEST_RELEASE") - // Get the latest commit SHA from the appropriate branch ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) if err != nil { @@ -81,7 +75,7 @@ func updateProdCliFiles(releaseType string) (string, error) { // Create a new commit with all the changes author := &github.CommitAuthor{ - Name: github.String("ibix16"), + Name: github.String("eks-a-releaser"), Email: github.String("fake@wtv.com"), } @@ -110,10 +104,8 @@ func updateProdCliFiles(releaseType string) (string, error) { } func createProdCliPullRequest(releaseType string) error { - latestRelease := os.Getenv("LATEST_RELEASE") // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) From 96e94b1b9d9341af32bf5d695ad78697c27fe212 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:34:41 -0700 Subject: [PATCH 09/21] Update stage-bundle.go --- release/cli/cmd/stage-bundle.go | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/release/cli/cmd/stage-bundle.go b/release/cli/cmd/stage-bundle.go index e7b7663a36ff..02bfb9e15dc8 100644 --- a/release/cli/cmd/stage-bundle.go +++ b/release/cli/cmd/stage-bundle.go @@ -28,8 +28,7 @@ var ( bundleNumPath = "release/triggers/bundle-release/development/BUNDLE_NUMBER" cliMaxVersionPath = "release/triggers/bundle-release/development/CLI_MAX_VERSION" cliMinVersionPath = "release/triggers/bundle-release/development/CLI_MIN_VERSION" - //triggerFilePath = "release/triggers/eks-a-releaser-trigger" - usersForkedRepoAccount = getAuthenticatedUsername() + usersForkedRepoAccount, _ = getAuthenticatedUsername() ) // stageBundleCmd represents the stageBundle command @@ -50,8 +49,6 @@ var stageBundleCmd = &cobra.Command{ func runAllStagebundle() error { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") - commitSHA, err := updateFilesStageBundle(RELEASE_TYPE) if err != nil { return err @@ -69,15 +66,9 @@ func runAllStagebundle() error { func updateFilesStageBundle(releaseType string) (string, error) { // create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) - // env variables - bundleNumber := os.Getenv("RELEASE_NUMBER") - latestVersion := os.Getenv("LATEST_VERSION") - latestRelease := os.Getenv("LATEST_RELEASE") - // Get the latest commit SHA from the appropriate branch, patch vs minor ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) if err != nil { @@ -86,7 +77,7 @@ func updateFilesStageBundle(releaseType string) (string, error) { latestCommitSha := ref.Object.GetSHA() entries := []*github.TreeEntry{} - entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(bundleNumPath, "/")), Type: github.String("blob"), Content: github.String(string(bundleNumber)), Mode: github.String("100644")}) + entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(bundleNumPath, "/")), Type: github.String("blob"), Content: github.String(string(releaseNumber)), Mode: github.String("100644")}) entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliMaxVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) entries = append(entries, &github.TreeEntry{Path: github.String(strings.TrimPrefix(cliMinVersionPath, "/")), Type: github.String("blob"), Content: github.String(string(latestVersion)), Mode: github.String("100644")}) @@ -99,7 +90,7 @@ func updateFilesStageBundle(releaseType string) (string, error) { // Create a new commit with all the changes author := &github.CommitAuthor{ - Name: github.String("ibix16"), + Name: github.String("eks-a-releaser"), Email: github.String("fake@wtv.com"), } @@ -128,10 +119,8 @@ func updateFilesStageBundle(releaseType string) (string, error) { } func createPullRequestStageBundleTwo(releaseType string) error { - latestRelease := os.Getenv("LATEST_RELEASE") // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) @@ -200,7 +189,7 @@ type User struct { UpdatedAt string `json:"updated_at"` } -func getAuthenticatedUsername() string { +func getAuthenticatedUsername() (string, error) { // username is fetched using gh PAT accessToken := os.Getenv("SECRET_PAT") @@ -212,7 +201,7 @@ func getAuthenticatedUsername() string { // Create a new HTTP request req, err := http.NewRequest("GET", "https://api.github.com/user", nil) if err != nil { - return "error creating HTTP request" + return "", fmt.Errorf("error creating HTTP requests: %v", err) } // Set the authorization header with the personal access token @@ -221,28 +210,28 @@ func getAuthenticatedUsername() string { // Send the HTTP request resp, err := client.Do(req) if err != nil { - return "error sending HTTP request" + return "", fmt.Errorf("error sending HTTP requests: %v", err) } defer resp.Body.Close() // Read the response body body, err := ioutil.ReadAll(resp.Body) if err != nil { - return "error reading response body" + return "", fmt.Errorf("error reading response body: %v", err) } // Check if the request was successful if resp.StatusCode != http.StatusOK { - return "failed to retrieve user information" + return "failed to retrieve user information", nil } // Unmarshal the response body into a User struct var user User err = json.Unmarshal(body, &user) if err != nil { - return "error unmarshalling" + return "", fmt.Errorf("error unmarshalling: %v", err) } stringUser := user.Login - return stringUser + return stringUser, nil } From 77274ecd6bb3b40510c9ce622de1dd84e2a7c4ff Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:35:04 -0700 Subject: [PATCH 10/21] Update stage-cli.go --- release/cli/cmd/stage-cli.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/release/cli/cmd/stage-cli.go b/release/cli/cmd/stage-cli.go index b7ef7ec27681..d9e77d28eea1 100644 --- a/release/cli/cmd/stage-cli.go +++ b/release/cli/cmd/stage-cli.go @@ -13,7 +13,6 @@ import ( "context" "fmt" "log" - "os" "strings" "github.com/google/go-github/v62/github" @@ -39,7 +38,6 @@ var stageCliCmd = &cobra.Command{ // runs both update functions func updateAllStageCliFiles() { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") commitSHA, err := updateFilesStageCli(RELEASE_TYPE) if err != nil { @@ -54,14 +52,10 @@ func updateAllStageCliFiles() { } func updateFilesStageCli(releaseType string) (string, error) { - accessToken := os.Getenv("SECRET_PAT") + ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) - releaseNumber := os.Getenv("RELEASE_NUMBER") - latestVersion := os.Getenv("LATEST_VERSION") - latestRelease := os.Getenv("LATEST_RELEASE") - // Get the latest commit SHA from the appropriate branch ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) if err != nil { @@ -82,7 +76,7 @@ func updateFilesStageCli(releaseType string) (string, error) { // Create a new commit with all the changes author := &github.CommitAuthor{ - Name: github.String("ibix16"), + Name: github.String("eks-a-releaser"), Email: github.String("fake@wtv.com"), } @@ -111,10 +105,8 @@ func updateFilesStageCli(releaseType string) (string, error) { } func createPullRequestStageCli(releaseType string) error { - latestRelease := os.Getenv("LATEST_RELEASE") - + // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) From 35093a120abb4b538f70825328ca5a5f2650341e Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:35:23 -0700 Subject: [PATCH 11/21] Update update-homebrew.go --- release/cli/cmd/update-homebrew.go | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/release/cli/cmd/update-homebrew.go b/release/cli/cmd/update-homebrew.go index c9d1bcaf36c1..df0c269d4c26 100644 --- a/release/cli/cmd/update-homebrew.go +++ b/release/cli/cmd/update-homebrew.go @@ -13,7 +13,6 @@ import ( "context" "fmt" "log" - "os" "strings" "github.com/google/go-github/v62/github" @@ -37,8 +36,7 @@ and usage of using your command.`, } func runAllHomebrew() { - RELEASE_TYPE := os.Getenv("RELEASE_TYPE") - + _, err := updateHomebrew(RELEASE_TYPE) if err != nil { log.Panic(err) @@ -52,12 +50,7 @@ func runAllHomebrew() { func updateHomebrew(releaseType string) (string, error) { - // env variables - latestVersionValue := os.Getenv("LATEST_VERSION") - latestRelease := os.Getenv("LATEST_RELEASE") - // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) @@ -68,17 +61,17 @@ func updateHomebrew(releaseType string) (string, error) { // Access homebrew file FileContentBundleNumber, _, _, err := client.Repositories.GetContents(ctx, usersForkedRepoAccount, EKSAnyrepoName, homebrewPath, opts) if err != nil { - fmt.Print("first breakpoint", err) + return "", fmt.Errorf("error accessing homebrew file %s", err) } // Holds content of homebrew cli version file content, err := FileContentBundleNumber.GetContent() if err != nil { - fmt.Print("second breakpoint", err) + return "", fmt.Errorf("error fetching file contents %s", err) } // Update instances of previous release with new - updatedFile := strings.ReplaceAll(content, content, latestVersionValue) + updatedFile := strings.ReplaceAll(content, content, latestVersion) // Get the latest commit SHA from the appropriate branch ref, _, err := client.Git.GetRef(ctx, usersForkedRepoAccount, EKSAnyrepoName, "heads/"+getBranchName(releaseType, latestRelease)) @@ -98,7 +91,7 @@ func updateHomebrew(releaseType string) (string, error) { // Create a new commit author := &github.CommitAuthor{ - Name: github.String("ibix16"), + Name: github.String("eks-a-releaser"), Email: github.String("fake@wtv.com"), } @@ -127,10 +120,8 @@ func updateHomebrew(releaseType string) (string, error) { } func createPullRequestHomebrew(releaseType string) error { - latestRelease := os.Getenv("LATEST_RELEASE") // Create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) From 0e734dea840612f632fa91e932711d1a11cdcc0f Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:35:52 -0700 Subject: [PATCH 12/21] Update update-makefile.go --- release/cli/cmd/update-makefile.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/release/cli/cmd/update-makefile.go b/release/cli/cmd/update-makefile.go index 4641076879a1..18fc7e7820b0 100644 --- a/release/cli/cmd/update-makefile.go +++ b/release/cli/cmd/update-makefile.go @@ -14,7 +14,6 @@ import ( "context" "fmt" "log" - "os" "strings" "github.com/google/go-github/v62/github" @@ -41,12 +40,9 @@ var updateMakefileCmd = &cobra.Command{ func updateMakefile() error { // create client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) - // string variable holding latest release from env "release-0.xx" - latestRelease := os.Getenv("LATEST_RELEASE") opts := &github.RepositoryContentGetOptions{ Ref: "main", // branch that will be accessed @@ -55,12 +51,12 @@ func updateMakefile() error { // access makefile in forked repo and retrieve entire file contents triggerFileContentBundleNumber, _, _, err := client.Repositories.GetContents(ctx, usersForkedRepoAccount, EKSAnyrepoName, makeFilePath, opts) if err != nil { - fmt.Print("first breakpoint", err) + return fmt.Errorf("error accessing file : %s", err) } // holds makefile content, err := triggerFileContentBundleNumber.GetContent() if err != nil { - fmt.Print("second breakpoint", err) + return fmt.Errorf("error fetching file content : %s", err) } // stores entire updated Makefile as a string @@ -85,7 +81,7 @@ func updateMakefile() error { // create new commit, update email address author := &github.CommitAuthor{ - Name: github.String("ibix16"), + Name: github.String("eks-a-releaser"), Email: github.String("fake@wtv.com"), } From 78e712631d22d380d1bd0d31ba30be27eec7194c Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 13:36:10 -0700 Subject: [PATCH 13/21] Update update-prow.go --- release/cli/cmd/update-prow.go | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/release/cli/cmd/update-prow.go b/release/cli/cmd/update-prow.go index 86b7b94f3422..e9c488c4b6da 100644 --- a/release/cli/cmd/update-prow.go +++ b/release/cli/cmd/update-prow.go @@ -51,19 +51,17 @@ var updateProwCmd = &cobra.Command{ func updateProw() { - latestRelease := os.Getenv("LATEST_RELEASE") - // Step 1: Create a folder on the user's desktop homeDir, err := os.UserHomeDir() if err != nil { - fmt.Printf("error getting user home directory: %v", err) + log.Printf("error getting user home directory: %v", err) return } desktopPath := filepath.Join(homeDir, "Desktop") newFolderPath := filepath.Join(desktopPath, "ProwJobsRepo") err = os.Mkdir(newFolderPath, 0755) if err != nil { - fmt.Println("Error creating folder:", err) + log.Println("Error creating folder:", err) return } fmt.Println("Folder created successfully at:", newFolderPath) @@ -72,19 +70,19 @@ func updateProw() { clonedRepoDestination := filepath.Join(homeDir, "Desktop", "ProwJobsRepo") repo, err := cloneRepo("https://github.com/ibix16/eks-anywhere-prow-jobs", clonedRepoDestination) if err != nil { - fmt.Printf("error cloning repo: %v", err) + log.Printf("error cloning repo: %v", err) return } // Step 2: Rename the file with the latest version originalFilePath, err := retrieveFilePath(clonedRepoDestination + "/templater/jobs/periodic/eks-anywhere-build-tooling") if err != nil { - fmt.Printf("error fetching path to file on cloned repo: %v", err) + log.Printf("error fetching path to file on cloned repo: %v", err) } newFilePath := clonedRepoDestination + "/templater/jobs/periodic/eks-anywhere-build-tooling/eks-anywhere-attribution-periodics-" + latestRelease + ".yaml" err = os.Rename(originalFilePath, newFilePath) if err != nil { - fmt.Printf("error renaming file: %v", err) + log.Printf("error renaming file: %v", err) return } @@ -102,12 +100,12 @@ func updateProw() { if err != nil { log.Fatalf("Failed to write file: %v", err) } - fmt.Println("File updated successfully.") + log.Println("File updated successfully.") // Execute make command err = makeCommand() if err != nil { - fmt.Printf("error running make command: %v", err) + log.Printf("error running make command: %v", err) return } fmt.Println("Make command executed successfully.") @@ -115,14 +113,14 @@ func updateProw() { // Create a branch in the user's forked repo err = createProwBranch(usersForkedRepoAccount, prowRepo) if err != nil { - fmt.Printf("error creating branch: %v", err) + log.Printf("error creating branch: %v", err) return } // Commit and push changes to the branch err = commitAndPushChanges(repo, latestRelease+"-releaser") if err != nil { - fmt.Printf("error pushing changes to branch: %v", err) + log.Printf("error pushing changes to branch: %v", err) return } fmt.Println("Changes pushed successfully.") @@ -130,17 +128,17 @@ func updateProw() { // Create PR err = createProwPr() if err != nil { - fmt.Printf("error creating PR: %v", err) + log.Printf("error creating PR: %v", err) return } // delete folder err = os.RemoveAll(clonedRepoDestination) if err != nil { - fmt.Printf("error deleting folder: %s", err) + log.Printf("error deleting folder: %s", err) } - fmt.Println("Folder deleted successfully from desktop.") + log.Println("Folder deleted successfully from desktop.") } @@ -190,7 +188,7 @@ func cloneRepo(cloneURL, destination string) (*git.Repository, error) { func makeCommand() error { desktopPath, err := os.UserHomeDir() if err != nil { - fmt.Printf("error getting user home directory: %v", err) + log.Printf("error getting user home directory: %v", err) return nil } clonedRepoPath := filepath.Join(desktopPath, "Desktop", "ProwJobsRepo") @@ -206,8 +204,6 @@ func makeCommand() error { func createProwBranch(owner, repo string) error { - latestRelease := os.Getenv("LATEST_RELEASE") - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) @@ -278,10 +274,8 @@ func commitAndPushChanges(repo *git.Repository, branchName string) error { // Function to create the PR func createProwPr() error { - - latestRelease := os.Getenv("LATEST_RELEASE") + // Create a GitHub client - accessToken := os.Getenv("SECRET_PAT") ctx := context.Background() client := github.NewClient(nil).WithAuthToken(accessToken) From ab6cc3db238474b19634cb9ccbd2ddaba7dd1c35 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:01:29 -0700 Subject: [PATCH 14/21] Update go.mod --- release/cli/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/cli/go.mod b/release/cli/go.mod index 46c77faf7533..dc510dba126f 100644 --- a/release/cli/go.mod +++ b/release/cli/go.mod @@ -1,6 +1,6 @@ module github.com/aws/eks-anywhere/release/cli -go 1.22.4 +go 1.22 require ( github.com/aws/aws-sdk-go v1.54.12 From 86bfcf74b312d1843a6623256c839041afe01394 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:10:56 -0700 Subject: [PATCH 15/21] Update go-build-binary.yml --- release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 1ea636309d48..615f4b600e9b 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -7,7 +7,7 @@ phases: build: commands: - - make dev-release -C release + - make build -C release artifacts: files: From 779b0f6069190e868e3faad80358c612b2a2f64e Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:20:16 -0700 Subject: [PATCH 16/21] Update go-build-binary.yml --- .../buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 615f4b600e9b..056c8fe7dfe2 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -1,5 +1,7 @@ version: 0.2 - +env: + variables: + GOLANG_VERSION: "1.22" phases: pre_build: commands: From 6da1f675f313421b8d3d3efeddc0ee1543fff780 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:28:31 -0700 Subject: [PATCH 17/21] Update go.mod --- release/cli/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/cli/go.mod b/release/cli/go.mod index dc510dba126f..46c77faf7533 100644 --- a/release/cli/go.mod +++ b/release/cli/go.mod @@ -1,6 +1,6 @@ module github.com/aws/eks-anywhere/release/cli -go 1.22 +go 1.22.4 require ( github.com/aws/aws-sdk-go v1.54.12 From 7f16939d2372224a81d5e85e91b70dda016643dd Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:28:50 -0700 Subject: [PATCH 18/21] Update go-build-binary.yml --- .../buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 056c8fe7dfe2..615f4b600e9b 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -1,7 +1,5 @@ version: 0.2 -env: - variables: - GOLANG_VERSION: "1.22" + phases: pre_build: commands: From 8f8e575e1208e865474f058a3eac4fedd418f902 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 15:41:53 -0700 Subject: [PATCH 19/21] Update go-build-binary.yml --- .../buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index 615f4b600e9b..a57dbf3819fe 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -1,14 +1,12 @@ +--- version: 0.2 - phases: pre_build: commands: - ./release/scripts/setup.sh - build: commands: - make build -C release - artifacts: files: - release/bin/eks-anywhere-release From 3636b7ac0b45f2b4e0a234675892cd4be8acadf5 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Mon, 19 Aug 2024 17:18:41 -0700 Subject: [PATCH 20/21] Update go-build-binary.yml --- release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml index a57dbf3819fe..c2e945721981 100644 --- a/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml +++ b/release/buildspecs/eks-a-releaser-buildspec/go-build-binary.yml @@ -10,3 +10,4 @@ phases: artifacts: files: - release/bin/eks-anywhere-release + - release/buildspecs/**/* From 1d8bb125ff9803d07a6e85802bbdb4bccda32c12 Mon Sep 17 00:00:00 2001 From: Ivan Rivera Date: Tue, 20 Aug 2024 13:56:58 -0700 Subject: [PATCH 21/21] Update create-release.go --- release/cli/cmd/create-release.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/cli/cmd/create-release.go b/release/cli/cmd/create-release.go index 9c9dce4a5b46..2b3ef857c49e 100644 --- a/release/cli/cmd/create-release.go +++ b/release/cli/cmd/create-release.go @@ -141,7 +141,7 @@ func createGitHubRelease(releaseTag *github.RepositoryRelease) (*github.Reposito client := github.NewClient(nil).WithAuthToken(accessToken) release, _, err := client.Repositories.GetReleaseByTag(ctx, upStreamRepoOwner, EKSAnyrepoName, latestVersion) - if err != nil { + if err == nil { log.Printf("Release %s already exists!\n", latestVersion) return release, nil }