Skip to content

feat:support --dependency-update before upgrade #774

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cmd/helm3.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@ func getRelease(release, namespace string) ([]byte, error) {
return outputWithRichError(cmd)
}

func updateDependencies(chart string) ([]byte, error) {
args := []string{"dependency", "update", chart}
cmd := exec.Command(os.Getenv("HELM_BIN"), args...)
return outputWithRichError(cmd)
}

func getHooks(release, namespace string) ([]byte, error) {
args := []string{"get", "hooks", release}
if namespace != "" {
Expand Down
12 changes: 12 additions & 0 deletions cmd/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type diffCmd struct {
resetValues bool
resetThenReuseValues bool
allowUnreleased bool
dependencyUpdate bool
noHooks bool
includeTests bool
includeCRDs bool
Expand Down Expand Up @@ -240,6 +241,7 @@ func newChartCommand() *cobra.Command {
f.BoolVar(&diff.resetThenReuseValues, "reset-then-reuse-values", false, "reset the values to the ones built into the chart, apply the last release's values and merge in any new values. If '--reset-values' or '--reuse-values' is specified, this is ignored")
f.BoolVar(&diff.allowUnreleased, "allow-unreleased", false, "enables diffing of releases that are not yet deployed via Helm")
f.BoolVar(&diff.install, "install", false, "enables diffing of releases that are not yet deployed via Helm (equivalent to --allow-unreleased, added to match \"helm upgrade --install\" command")
f.BoolVar(&diff.dependencyUpdate, "dependency-update", false, "update dependencies if they are missing before diffing")
f.BoolVar(&diff.noHooks, "no-hooks", false, "disable diffing of hooks")
f.BoolVar(&diff.includeTests, "include-tests", false, "enable the diffing of the helm test hooks")
f.BoolVar(&diff.includeCRDs, "include-crds", false, "include CRDs in the diffing")
Expand Down Expand Up @@ -271,6 +273,16 @@ func (d *diffCmd) runHelm3() error {

var err error

if d.dependencyUpdate {
var output []byte
output, err = updateDependencies(d.chart)
if err != nil {
return err
} else {
fmt.Println(string(output))
Copy link
Preview

Copilot AI Aug 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The dependency update output is printed to stdout without any context or formatting. Consider adding a prefix like 'Dependency update:' or using a logger to maintain consistency with other command output formatting in the codebase.

Suggested change
fmt.Println(string(output))
log.Printf("Dependency update: %s", string(output))

Copilot uses AI. Check for mistakes.

}
Copy link
Preview

Copilot AI Aug 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The 'else' clause is unnecessary here since the 'if' block returns early on error. Consider removing the 'else' and unindenting the output printing code for better readability.

Suggested change
}
}
fmt.Println(string(output))

Copilot uses AI. Check for mistakes.

}

if d.takeOwnership {
// We need to do a three way merge between the manifests of the new
// release, the manifests of the old release and what is currently deployed
Expand Down
Loading