From 84f898e78ac085011adcf48fcc846d33816add19 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 2 Aug 2024 17:11:08 -0300 Subject: [PATCH 01/14] new cmd sub command for charts update --- cmd/release/cmd/update.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index 3edbc3e3..0ce86e0a 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -3,7 +3,9 @@ package cmd import ( "context" "errors" + "fmt" + "github.com/rancher/ecm-distro-tools/release/charts" "github.com/rancher/ecm-distro-tools/release/k3s" "github.com/rancher/ecm-distro-tools/repository" "github.com/spf13/cobra" @@ -42,8 +44,41 @@ var updateK3sReferencesCmd = &cobra.Command{ }, } +var updateChartsCmd = &cobra.Command{ + Use: "charts [branch] [chart] [version]", + Short: "Update charts files locally, stage and commit the changes.", + RunE: func(cmd *cobra.Command, args []string) error { + var branch, chart, version string + + if len(args) < 3 { + return errors.New("expected at least three arguments: [branch] [chart] [version]") + } + + branch = args[0] + chart = args[1] + version = args[2] + + config := rootConfig.Charts + if config.Workspace == "" || config.ChartsForkURL == "" { + return errors.New("verify your config file, chart configuration not implemented correctly, you must insert workspace path and your forked repo url") + } + + ctx := context.Background() + gh := repository.NewGithub(ctx, rootConfig.Auth.GithubToken) + + output, err := charts.Update(ctx, gh, config, branch, chart, version) + if err != nil { + fmt.Println(output) + return err + } + + return nil + }, +} + func init() { rootCmd.AddCommand(updateCmd) + updateCmd.AddCommand(updateChartsCmd) updateCmd.AddCommand(updateK3sCmd) updateK3sCmd.AddCommand(updateK3sReferencesCmd) } From db7da76c226568e4a3d787aeacd58c332b65084d Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 2 Aug 2024 17:11:38 -0300 Subject: [PATCH 02/14] new Update function for executing chart release/forward-port --- release/charts/charts.go | 42 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/release/charts/charts.go b/release/charts/charts.go index 588ac6ce..d6e69de7 100644 --- a/release/charts/charts.go +++ b/release/charts/charts.go @@ -7,6 +7,8 @@ import ( "os/exec" "strings" + "github.com/go-git/go-git/v5" + "github.com/google/go-github/v39/github" "github.com/rancher/ecm-distro-tools/cmd/release/config" ) @@ -28,6 +30,42 @@ func List(ctx context.Context, c *config.ChartsRelease, branch, chart string) (s return response, nil } +// Update will pull the target chart version to the local branch and create a PR to release the chart +func Update(ctx context.Context, gh *github.Client, c *config.ChartsRelease, br, ch, vr string) (string, error) { + var branchArg, chartArg, versionArg, forkArg string + + branchArg = "--branch-version=" + br + chartArg = "--chart=" + ch + versionArg = "--version=" + vr + forkArg = "--fork=" + c.ChartsForkURL + + output, err := runChartsBuild(c.Workspace, "release", branchArg, chartArg, versionArg, forkArg) + if err != nil { + return string(output), err + } + + r, err := git.PlainOpen(c.Workspace) + if err != nil { + return string(output), err + } + + wt, err := r.Worktree() + if err != nil { + return string(output), err + } + + if err := wt.AddWithOptions(&git.AddOptions{All: true}); err != nil { + return string(output), err + } + + commitMsg := "release chart: " + ch + " - version: " + vr + if _, err := wt.Commit(commitMsg, &git.CommitOptions{All: true}); err != nil { + return string(output), err + } + + return string(output), nil +} + func runChartsBuild(chartsRepoPath string, args ...string) ([]byte, error) { // save current working dir ecmWorkDir, err := os.Getwd() @@ -45,12 +83,12 @@ func runChartsBuild(chartsRepoPath string, args ...string) ([]byte, error) { cmd := exec.Command(bin, args...) output, err := cmd.CombinedOutput() if err != nil { - return nil, err + return output, err } // Change back working dir for the caller if err := os.Chdir(ecmWorkDir); err != nil { - return nil, err + return output, err } return output, nil From 63c185a2bde2db6662c2e0b37ea39c9b7618dee8 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 13:01:39 -0300 Subject: [PATCH 03/14] arguments.go for handling arguments auto completion and checks --- release/charts/arguments.go | 145 ++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 release/charts/arguments.go diff --git a/release/charts/arguments.go b/release/charts/arguments.go new file mode 100644 index 00000000..63a1f448 --- /dev/null +++ b/release/charts/arguments.go @@ -0,0 +1,145 @@ +package charts + +import ( + "context" + "encoding/json" + "io" + "os" + "path/filepath" + "sort" + + "github.com/rancher/ecm-distro-tools/cmd/release/config" +) + +type status struct { + ToRelease map[string][]asset `json:"to_be_released"` + ToForwardPort map[string][]asset `json:"to_be_forward_ported"` +} + +type asset struct { + Version string `json:"version"` +} + +// loadState will load the lifecycle-status state from an existing state.json file at charts repo +func loadState(filePath string) (*status, error) { + s := &status{} + + file, err := os.Open(filePath) + if err != nil { + return nil, err + } + + data, err := io.ReadAll(file) + if err != nil { + return nil, err + } + + if err := json.Unmarshal(data, &s); err != nil { + return nil, err + } + + return s, nil +} + +// BranchArgs will return the list of available branch version lines +func BranchArgs() []string { + return []string{"2.9", "2.8"} +} + +// ChartArgs will return the list of available charts in the current branch +func ChartArgs(ctx context.Context, c *config.ChartsRelease) ([]string, error) { + assets := filepath.Join(c.Workspace, "assets") + + // Read the directory assets contents + files, err := os.ReadDir(assets) + if err != nil { + return nil, err + } + + var dirs []string + for _, file := range files { + if file.IsDir() { + dirs = append(dirs, file.Name()) + } + } + + // Sort alphabetically + sort.Strings(dirs) + return dirs, nil +} + +// VersionArgs will return the list of available versions for the target chart +func VersionArgs(ctx context.Context, c *config.ChartsRelease, ch string) ([]string, error) { + status, err := loadState(filepath.Join(c.Workspace, "state.json")) + if err != nil { + return nil, err + } + + versionsRelease, foundVersionsToRelease := status.ToRelease[ch] + versionsForwardPort, foundVersionsToForwardPort := status.ToForwardPort[ch] + + if !foundVersionsToRelease && !foundVersionsToForwardPort { + return []string{"no versions found..."}, nil + } + + versions := make([]string, 0) + for _, v := range versionsRelease { + versions = append(versions, v.Version) + } + for _, v := range versionsForwardPort { + versions = append(versions, v.Version) + } + + return versions, nil +} + +// CheckBranchArgs will check if the branch line exists +func CheckBranchArgs(branch string) bool { + var found bool + availableBranches := BranchArgs() + + for _, b := range availableBranches { + if b == branch { + found = true + break + } + } + + return found +} + +// CheckChartArgs will check if the chart exists in the available charts +func CheckChartArgs(ctx context.Context, conf *config.ChartsRelease, ch string) (bool, error) { + var found bool + availableCharts, err := ChartArgs(ctx, conf) + if err != nil { + return found, err + } + + for _, c := range availableCharts { + if c == ch { + found = true + break + } + } + + return found, nil +} + +// CheckVersionArgs exists to be released or forward ported +func CheckVersionArgs(ctx context.Context, conf *config.ChartsRelease, ch, v string) (bool, error) { + var found bool + availableVersions, err := VersionArgs(ctx, conf, ch) + if err != nil { + return found, err + } + + for _, c := range availableVersions { + if c == v { + found = true + break + } + } + + return found, nil +} From bbb36d25aecc24e7cb498ac99d1a379ccc7440fd Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 13:02:12 -0300 Subject: [PATCH 04/14] update.go updated version --- cmd/release/cmd/update.go | 86 +++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 12 deletions(-) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index 0ce86e0a..bbcef75e 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "log" "github.com/rancher/ecm-distro-tools/release/charts" "github.com/rancher/ecm-distro-tools/release/k3s" @@ -45,33 +46,87 @@ var updateK3sReferencesCmd = &cobra.Command{ } var updateChartsCmd = &cobra.Command{ - Use: "charts [branch] [chart] [version]", - Short: "Update charts files locally, stage and commit the changes.", - RunE: func(cmd *cobra.Command, args []string) error { - var branch, chart, version string + Use: "charts [branch] [chart] [version]", + Short: "Update charts files locally, stage and commit the changes.", + Example: "release update charts 2.9 rancher-istio 104.0.0+up1.21.1", + Args: func(cmd *cobra.Command, args []string) error { + if err := validateChartConfig(); err != nil { + log.Fatal(err) + } - if len(args) < 3 { - return errors.New("expected at least three arguments: [branch] [chart] [version]") + if len(args) != 3 { + return errors.New("expected 3 arguments: [branch] [chart] [version]") } + var branch, chart, version string + var found bool + var err error + branch = args[0] chart = args[1] version = args[2] - config := rootConfig.Charts - if config.Workspace == "" || config.ChartsForkURL == "" { - return errors.New("verify your config file, chart configuration not implemented correctly, you must insert workspace path and your forked repo url") + found = charts.CheckBranchArgs(branch) + if !found { + return errors.New("branch not available: " + branch) } - ctx := context.Background() - gh := repository.NewGithub(ctx, rootConfig.Auth.GithubToken) + found, err = charts.CheckChartArgs(context.Background(), rootConfig.Charts, chart) + if err != nil { + return err + } + if !found { + return errors.New("chart not available: " + chart) + } - output, err := charts.Update(ctx, gh, config, branch, chart, version) + found, err = charts.CheckVersionArgs(context.Background(), rootConfig.Charts, chart, version) + if err != nil { + return err + } + if !found { + return errors.New("version not available: " + version) + } + + return nil + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if err := validateChartConfig(); err != nil { + log.Fatal(err) + } + + if len(args) == 0 { + return charts.BranchArgs(), cobra.ShellCompDirectiveNoFileComp + } else if len(args) == 1 { + chArgs, err := charts.ChartArgs(context.Background(), rootConfig.Charts) + if err != nil { + log.Fatalf("failed to get available charts: %v", err) + } + + return chArgs, cobra.ShellCompDirectiveNoFileComp + } else if len(args) == 2 { + vArgs, err := charts.VersionArgs(context.Background(), rootConfig.Charts, args[1]) + if err != nil { + log.Fatalf("failed to get available versions: %v", err) + } + + return vArgs, cobra.ShellCompDirectiveNoFileComp + } + + return nil, cobra.ShellCompDirectiveNoFileComp + }, + RunE: func(cmd *cobra.Command, args []string) error { + var branch, chart, version string + branch = args[0] + chart = args[1] + version = args[2] + + output, err := charts.Update(context.Background(), rootConfig.Charts, branch, chart, version) if err != nil { fmt.Println(output) return err } + fmt.Println(output) return nil }, } @@ -82,3 +137,10 @@ func init() { updateCmd.AddCommand(updateK3sCmd) updateK3sCmd.AddCommand(updateK3sReferencesCmd) } + +func validateChartConfig() error { + if rootConfig.Charts.Workspace == "" || rootConfig.Charts.ChartsForkURL == "" { + return errors.New("verify your config file, chart configuration not implemented correctly, you must insert workspace path and your forked repo url") + } + return nil +} From 60949c1ae9abef893c892fd3d254696eb44e706c Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 13:02:35 -0300 Subject: [PATCH 05/14] charts.go --- release/charts/charts.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release/charts/charts.go b/release/charts/charts.go index d6e69de7..02fc4ca3 100644 --- a/release/charts/charts.go +++ b/release/charts/charts.go @@ -8,7 +8,6 @@ import ( "strings" "github.com/go-git/go-git/v5" - "github.com/google/go-github/v39/github" "github.com/rancher/ecm-distro-tools/cmd/release/config" ) @@ -31,7 +30,7 @@ func List(ctx context.Context, c *config.ChartsRelease, branch, chart string) (s } // Update will pull the target chart version to the local branch and create a PR to release the chart -func Update(ctx context.Context, gh *github.Client, c *config.ChartsRelease, br, ch, vr string) (string, error) { +func Update(ctx context.Context, c *config.ChartsRelease, br, ch, vr string) (string, error) { var branchArg, chartArg, versionArg, forkArg string branchArg = "--branch-version=" + br From 54f7c75478b2c6449e9c1f94a81c63ea33adfafb Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 17:01:22 -0300 Subject: [PATCH 06/14] resolving conflicts from upstream at go.mod --- go.mod | 42 ++++++++--------------- go.sum | 103 +++++++++++++++++++-------------------------------------- 2 files changed, 48 insertions(+), 97 deletions(-) diff --git a/go.mod b/go.mod index 9740ceb7..1cab8451 100644 --- a/go.mod +++ b/go.mod @@ -4,23 +4,24 @@ go 1.21 require ( github.com/drone/drone-go v1.7.1 - github.com/go-git/go-git/v5 v5.11.0 + github.com/go-git/go-git/v5 v5.12.1-0.20240807144107-c594bae8d75d github.com/google/go-github/v39 v39.2.0 github.com/sirupsen/logrus v1.9.3 go.opentelemetry.io/otel v1.25.0 go.opentelemetry.io/otel/sdk v1.25.0 go.opentelemetry.io/otel/trace v1.25.0 - golang.org/x/crypto v0.22.0 + golang.org/x/crypto v0.26.0 golang.org/x/mod v0.17.0 golang.org/x/oauth2 v0.18.0 ) require ( github.com/MetalBlueberry/go-plotly v0.4.0 + github.com/go-playground/validator/v10 v10.22.0 github.com/spf13/cobra v1.8.0 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/sync v0.7.0 - golang.org/x/text v0.14.0 + golang.org/x/sync v0.8.0 + golang.org/x/text v0.17.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -29,44 +30,29 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // 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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.19.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect go.opentelemetry.io/otel/metric v1.25.0 // indirect - go.uber.org/atomic v1.9.0 // indirect - go.uber.org/multierr v1.9.0 // indirect - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/tools v0.20.0 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect ) require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/emirpasic/gods v1.18.1 // 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-git/go-billy/v5 v5.5.1-0.20240427054813-8453aa90c6ec // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -75,11 +61,11 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.3.1 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.23.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 3a03f033..5db1e484 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ github.com/MetalBlueberry/go-plotly v0.4.0/go.mod h1:TWXjEOVRo7sm3rY3j18cKbbwRrR 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/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/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= 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= @@ -23,35 +23,36 @@ github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t 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 v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 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/drone/drone-go v1.7.1 h1:ZX+3Rs8YHUSUQ5mkuMLmm1zr1ttiiE2YGNxF3AnyDKw= github.com/drone/drone-go v1.7.1/go.mod h1:fxCf9jAnXDZV1yDr0ckTuWd1intvcQwfJmTRpTZ1mXg= -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/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb h1:2SoxRauy2IqekRMggrQk3yNI5X6omSnk6ugVbFywwXs= +github.com/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -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/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -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/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= 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-billy/v5 v5.5.1-0.20240427054813-8453aa90c6ec h1:JtjPVUU/+C1OaEXG+ojNfspw7t7Y30jiyr6zsXA8Eco= +github.com/go-git/go-billy/v5 v5.5.1-0.20240427054813-8453aa90c6ec/go.mod h1:bmsuIkj+yaSISZdLRNCLRaSiWnwDatBN1b62vLkXn24= 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-git/go-git/v5 v5.12.1-0.20240807144107-c594bae8d75d h1:hJt4GF2BxUI1X20p6APebYu4T7TG4t3HWNwEbgFVilU= +github.com/go-git/go-git/v5 v5.12.1-0.20240807144107-c594bae8d75d/go.mod h1:HxWls9Nx+4sukm5KsYVOz6rR+YJBB4QaVDFaXzG/weQ= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/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-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= @@ -88,8 +89,6 @@ github.com/google/go-github/v39 v39.2.0 h1:rNNM311XtPOz5rDdsJXAp2o8F67X9FnROXTvt github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= 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/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.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -107,10 +106,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -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/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -121,8 +116,6 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.12.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -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/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= @@ -130,51 +123,31 @@ github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXc github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= 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 v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= 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.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= -github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= 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/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.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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.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.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/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 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/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -191,10 +164,6 @@ go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtx go.opentelemetry.io/otel/sdk v1.25.0/go.mod h1:oFgzCM2zdsxKzz6zwpTZYLLQsFwc+K0daArPdIhuxkw= go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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= @@ -203,10 +172,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 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-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= 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= @@ -225,8 +192,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug 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/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= @@ -235,8 +202,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ 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/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -258,15 +225,15 @@ 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/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.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.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/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/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= @@ -276,15 +243,15 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= 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/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/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/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 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= @@ -307,8 +274,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -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/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= From cfc29f49cfa3f78d3002fd6852518983353d9a2b Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 16:46:13 -0300 Subject: [PATCH 07/14] fixing anti-pattern go --- cmd/release/cmd/update.go | 1 - release/charts/charts.go | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index bbcef75e..904017af 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -122,7 +122,6 @@ var updateChartsCmd = &cobra.Command{ output, err := charts.Update(context.Background(), rootConfig.Charts, branch, chart, version) if err != nil { - fmt.Println(output) return err } diff --git a/release/charts/charts.go b/release/charts/charts.go index 02fc4ca3..597f974d 100644 --- a/release/charts/charts.go +++ b/release/charts/charts.go @@ -82,12 +82,14 @@ func runChartsBuild(chartsRepoPath string, args ...string) ([]byte, error) { cmd := exec.Command(bin, args...) output, err := cmd.CombinedOutput() if err != nil { - return output, err + err = fmt.Errorf("error: %w; log: %s", err, output) + return nil, err } // Change back working dir for the caller if err := os.Chdir(ecmWorkDir); err != nil { - return output, err + err = fmt.Errorf("error: %w; log: %s", err, output) + return nil, err } return output, nil From 7b82f134794c5e628b0dd65f4597ca303185aa1e Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 16:48:15 -0300 Subject: [PATCH 08/14] fixes decoder strategy avoiding ReadAll --- release/charts/arguments.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/release/charts/arguments.go b/release/charts/arguments.go index 63a1f448..f42dcfa9 100644 --- a/release/charts/arguments.go +++ b/release/charts/arguments.go @@ -3,7 +3,6 @@ package charts import ( "context" "encoding/json" - "io" "os" "path/filepath" "sort" @@ -29,12 +28,7 @@ func loadState(filePath string) (*status, error) { return nil, err } - data, err := io.ReadAll(file) - if err != nil { - return nil, err - } - - if err := json.Unmarshal(data, &s); err != nil { + if err := json.NewDecoder(file).Decode(&s); err != nil { return nil, err } From a99cdb9fbeada9931bb70318dac6f5755c428c2a Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 16:54:24 -0300 Subject: [PATCH 09/14] simplifying CheckChartArgs --- release/charts/arguments.go | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/release/charts/arguments.go b/release/charts/arguments.go index f42dcfa9..cfaa3613 100644 --- a/release/charts/arguments.go +++ b/release/charts/arguments.go @@ -89,51 +89,44 @@ func VersionArgs(ctx context.Context, c *config.ChartsRelease, ch string) ([]str // CheckBranchArgs will check if the branch line exists func CheckBranchArgs(branch string) bool { - var found bool availableBranches := BranchArgs() - for _, b := range availableBranches { if b == branch { - found = true - break + return true } } - return found + return false } // CheckChartArgs will check if the chart exists in the available charts func CheckChartArgs(ctx context.Context, conf *config.ChartsRelease, ch string) (bool, error) { - var found bool availableCharts, err := ChartArgs(ctx, conf) if err != nil { - return found, err + return false, err } for _, c := range availableCharts { if c == ch { - found = true - break + return true, nil } } - return found, nil + return false, nil } // CheckVersionArgs exists to be released or forward ported func CheckVersionArgs(ctx context.Context, conf *config.ChartsRelease, ch, v string) (bool, error) { - var found bool availableVersions, err := VersionArgs(ctx, conf, ch) if err != nil { - return found, err + return false, err } for _, c := range availableVersions { if c == v { - found = true - break + return true, nil } } - return found, nil + return false, nil } From 24523a83ec302c063163281c39c2c4e88906a433 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Wed, 7 Aug 2024 16:58:58 -0300 Subject: [PATCH 10/14] changing error handling --- release/charts/charts.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/release/charts/charts.go b/release/charts/charts.go index 597f974d..76457f97 100644 --- a/release/charts/charts.go +++ b/release/charts/charts.go @@ -2,6 +2,7 @@ package charts import ( "context" + "errors" "fmt" "os" "os/exec" @@ -82,14 +83,12 @@ func runChartsBuild(chartsRepoPath string, args ...string) ([]byte, error) { cmd := exec.Command(bin, args...) output, err := cmd.CombinedOutput() if err != nil { - err = fmt.Errorf("error: %w; log: %s", err, output) - return nil, err + return nil, errors.New(err.Error() + ": " + string(output)) } // Change back working dir for the caller if err := os.Chdir(ecmWorkDir); err != nil { - err = fmt.Errorf("error: %w; log: %s", err, output) - return nil, err + return nil, errors.New(err.Error() + ": " + string(output)) } return output, nil From 1cd79df1153b9533dbcc8c7b525c123d15074731 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 9 Aug 2024 20:09:04 -0300 Subject: [PATCH 11/14] changing config strategy for charts release --- cmd/release/cmd/update.go | 8 ++++---- cmd/release/config/config.go | 15 ++++++--------- release/charts/arguments.go | 8 +------- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index 904017af..c4ff2e8d 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -46,7 +46,7 @@ var updateK3sReferencesCmd = &cobra.Command{ } var updateChartsCmd = &cobra.Command{ - Use: "charts [branch] [chart] [version]", + Use: "charts [branch-line] [chart] [version]", Short: "Update charts files locally, stage and commit the changes.", Example: "release update charts 2.9 rancher-istio 104.0.0+up1.21.1", Args: func(cmd *cobra.Command, args []string) error { @@ -55,7 +55,7 @@ var updateChartsCmd = &cobra.Command{ } if len(args) != 3 { - return errors.New("expected 3 arguments: [branch] [chart] [version]") + return errors.New("expected 3 arguments: [branch-line] [chart] [version]") } var branch, chart, version string @@ -66,7 +66,7 @@ var updateChartsCmd = &cobra.Command{ chart = args[1] version = args[2] - found = charts.CheckBranchArgs(branch) + found = charts.CheckBranchArgs(branch, rootConfig.Charts.BranchLines) if !found { return errors.New("branch not available: " + branch) } @@ -95,7 +95,7 @@ var updateChartsCmd = &cobra.Command{ } if len(args) == 0 { - return charts.BranchArgs(), cobra.ShellCompDirectiveNoFileComp + return rootConfig.Charts.BranchLines, cobra.ShellCompDirectiveNoFileComp } else if len(args) == 1 { chArgs, err := charts.ChartArgs(context.Background(), rootConfig.Charts) if err != nil { diff --git a/cmd/release/config/config.go b/cmd/release/config/config.go index 0f90c992..c098e419 100644 --- a/cmd/release/config/config.go +++ b/cmd/release/config/config.go @@ -48,11 +48,10 @@ type RKE2 struct { // ChartsRelease type ChartsRelease struct { - Workspace string `json:"workspace" validate:"required,dirpath"` - ChartsRepoURL string `json:"charts_repo_url" validate:"required"` - ChartsForkURL string `json:"charts_fork_url" validate:"required"` - DevBranch string `json:"dev_branch" validate:"required"` - ReleaseBranch string `json:"release_branch" validate:"required"` + Workspace string `json:"workspace" validate:"required,dirpath"` + ChartsRepoURL string `json:"charts_repo_url" validate:"required"` + ChartsForkURL string `json:"charts_fork_url" validate:"required"` + BranchLines []string `json:"branch_lines" validate:"required"` } // User @@ -175,8 +174,7 @@ func ExampleConfig() (string, error) { Workspace: filepath.Join(gopath, "src", "github.com", "rancher", "charts") + "/", ChartsRepoURL: "https://github.com/rancher/charts", ChartsForkURL: "https://github.com/your-github-username/charts", - DevBranch: "dev-v2.9", - ReleaseBranch: "release-v2.9", + BranchLines: []string{"2.10", "2.9", "2.8"}, }, Auth: &Auth{ GithubToken: "YOUR_TOKEN", @@ -240,6 +238,5 @@ Charts Workspace: {{.Charts.Workspace}} ChartsRepoURL: {{.Charts.ChartsRepoURL}} ChartsForkURL: {{.Charts.ChartsForkURL}} - DevBranch: {{.Charts.DevBranch}} - ReleaseBranch: {{.Charts.ReleaseBranch}} + BranchLines: {{.Charts.BranchLines}} ` diff --git a/release/charts/arguments.go b/release/charts/arguments.go index cfaa3613..778abd1f 100644 --- a/release/charts/arguments.go +++ b/release/charts/arguments.go @@ -35,11 +35,6 @@ func loadState(filePath string) (*status, error) { return s, nil } -// BranchArgs will return the list of available branch version lines -func BranchArgs() []string { - return []string{"2.9", "2.8"} -} - // ChartArgs will return the list of available charts in the current branch func ChartArgs(ctx context.Context, c *config.ChartsRelease) ([]string, error) { assets := filepath.Join(c.Workspace, "assets") @@ -88,8 +83,7 @@ func VersionArgs(ctx context.Context, c *config.ChartsRelease, ch string) ([]str } // CheckBranchArgs will check if the branch line exists -func CheckBranchArgs(branch string) bool { - availableBranches := BranchArgs() +func CheckBranchArgs(branch string, availableBranches []string) bool { for _, b := range availableBranches { if b == branch { return true From cac4e42497d85182351d9a57cd92625ccc1cddf7 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 9 Aug 2024 20:40:12 -0300 Subject: [PATCH 12/14] changing naming strategy from arguments.go -> chart_management.go --- cmd/release/cmd/update.go | 6 +-- .../{arguments.go => chart_management.go} | 44 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) rename release/charts/{arguments.go => chart_management.go} (83%) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index c4ff2e8d..24f40a92 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -66,12 +66,12 @@ var updateChartsCmd = &cobra.Command{ chart = args[1] version = args[2] - found = charts.CheckBranchArgs(branch, rootConfig.Charts.BranchLines) + found = charts.IsBranchAvailable(branch, rootConfig.Charts.BranchLines) if !found { return errors.New("branch not available: " + branch) } - found, err = charts.CheckChartArgs(context.Background(), rootConfig.Charts, chart) + found, err = charts.IsChartAvailable(context.Background(), rootConfig.Charts, chart) if err != nil { return err } @@ -79,7 +79,7 @@ var updateChartsCmd = &cobra.Command{ return errors.New("chart not available: " + chart) } - found, err = charts.CheckVersionArgs(context.Background(), rootConfig.Charts, chart, version) + found, err = charts.IsVersionAvailable(context.Background(), rootConfig.Charts, chart, version) if err != nil { return err } diff --git a/release/charts/arguments.go b/release/charts/chart_management.go similarity index 83% rename from release/charts/arguments.go rename to release/charts/chart_management.go index 778abd1f..9a71092c 100644 --- a/release/charts/arguments.go +++ b/release/charts/chart_management.go @@ -19,22 +19,6 @@ type asset struct { Version string `json:"version"` } -// loadState will load the lifecycle-status state from an existing state.json file at charts repo -func loadState(filePath string) (*status, error) { - s := &status{} - - file, err := os.Open(filePath) - if err != nil { - return nil, err - } - - if err := json.NewDecoder(file).Decode(&s); err != nil { - return nil, err - } - - return s, nil -} - // ChartArgs will return the list of available charts in the current branch func ChartArgs(ctx context.Context, c *config.ChartsRelease) ([]string, error) { assets := filepath.Join(c.Workspace, "assets") @@ -82,8 +66,8 @@ func VersionArgs(ctx context.Context, c *config.ChartsRelease, ch string) ([]str return versions, nil } -// CheckBranchArgs will check if the branch line exists -func CheckBranchArgs(branch string, availableBranches []string) bool { +// IsBranchAvailable will check if the branch line exists +func IsBranchAvailable(branch string, availableBranches []string) bool { for _, b := range availableBranches { if b == branch { return true @@ -93,8 +77,8 @@ func CheckBranchArgs(branch string, availableBranches []string) bool { return false } -// CheckChartArgs will check if the chart exists in the available charts -func CheckChartArgs(ctx context.Context, conf *config.ChartsRelease, ch string) (bool, error) { +// IsChartAvailable will check if the chart exists in the available charts +func IsChartAvailable(ctx context.Context, conf *config.ChartsRelease, ch string) (bool, error) { availableCharts, err := ChartArgs(ctx, conf) if err != nil { return false, err @@ -109,8 +93,8 @@ func CheckChartArgs(ctx context.Context, conf *config.ChartsRelease, ch string) return false, nil } -// CheckVersionArgs exists to be released or forward ported -func CheckVersionArgs(ctx context.Context, conf *config.ChartsRelease, ch, v string) (bool, error) { +// IsVersionAvailable exists to be released or forward ported +func IsVersionAvailable(ctx context.Context, conf *config.ChartsRelease, ch, v string) (bool, error) { availableVersions, err := VersionArgs(ctx, conf, ch) if err != nil { return false, err @@ -124,3 +108,19 @@ func CheckVersionArgs(ctx context.Context, conf *config.ChartsRelease, ch, v str return false, nil } + +// loadState will load the lifecycle-status state from an existing state.json file at charts repo +func loadState(filePath string) (*status, error) { + s := &status{} + + file, err := os.Open(filePath) + if err != nil { + return nil, err + } + + if err := json.NewDecoder(file).Decode(&s); err != nil { + return nil, err + } + + return s, nil +} From ea7a5c9f1f4cd258414435612578ffa5bfd564f6 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 9 Aug 2024 20:46:48 -0300 Subject: [PATCH 13/14] removing log package in favor of fmt and os.Exit(1) --- cmd/release/cmd/update.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index 24f40a92..18710b94 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -4,7 +4,7 @@ import ( "context" "errors" "fmt" - "log" + "os" "github.com/rancher/ecm-distro-tools/release/charts" "github.com/rancher/ecm-distro-tools/release/k3s" @@ -51,7 +51,8 @@ var updateChartsCmd = &cobra.Command{ Example: "release update charts 2.9 rancher-istio 104.0.0+up1.21.1", Args: func(cmd *cobra.Command, args []string) error { if err := validateChartConfig(); err != nil { - log.Fatal(err) + fmt.Println(err) + os.Exit(1) } if len(args) != 3 { @@ -91,7 +92,8 @@ var updateChartsCmd = &cobra.Command{ }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if err := validateChartConfig(); err != nil { - log.Fatal(err) + fmt.Println(err) + os.Exit(1) } if len(args) == 0 { @@ -99,14 +101,16 @@ var updateChartsCmd = &cobra.Command{ } else if len(args) == 1 { chArgs, err := charts.ChartArgs(context.Background(), rootConfig.Charts) if err != nil { - log.Fatalf("failed to get available charts: %v", err) + fmt.Printf("failed to get available charts: %v\n", err) + os.Exit(1) } return chArgs, cobra.ShellCompDirectiveNoFileComp } else if len(args) == 2 { vArgs, err := charts.VersionArgs(context.Background(), rootConfig.Charts, args[1]) if err != nil { - log.Fatalf("failed to get available versions: %v", err) + fmt.Printf("failed to get available versions: %v", err) + os.Exit(1) } return vArgs, cobra.ShellCompDirectiveNoFileComp From cc7ab671b551957788e14d11a48e1212abae57a2 Mon Sep 17 00:00:00 2001 From: nicholasSSUSE Date: Fri, 9 Aug 2024 20:49:42 -0300 Subject: [PATCH 14/14] removing catch-all errors --- cmd/release/cmd/update.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cmd/release/cmd/update.go b/cmd/release/cmd/update.go index 18710b94..4279bf42 100644 --- a/cmd/release/cmd/update.go +++ b/cmd/release/cmd/update.go @@ -60,19 +60,15 @@ var updateChartsCmd = &cobra.Command{ } var branch, chart, version string - var found bool - var err error - branch = args[0] chart = args[1] version = args[2] - found = charts.IsBranchAvailable(branch, rootConfig.Charts.BranchLines) - if !found { + if found := charts.IsBranchAvailable(branch, rootConfig.Charts.BranchLines); !found { return errors.New("branch not available: " + branch) } - found, err = charts.IsChartAvailable(context.Background(), rootConfig.Charts, chart) + found, err := charts.IsChartAvailable(context.Background(), rootConfig.Charts, chart) if err != nil { return err }