WIP: fix include-needs to only include direct dependencies

- Add IncludeNeeds field to ChartPrepareOptions
- Update PrepareCharts to use GetSelectedReleasesWithNeeds
- Add GetSelectedReleasesWithNeeds function to handle both includeNeeds and includeTransitiveNeeds
- Update all callers to pass IncludeNeeds flag

Signed-off-by: yxxhero <aiopsclub@163.com>
(cherry picked from commit 3a701d3e80)
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero 2026-03-11 00:07:29 +08:00
parent 1ef6087f32
commit 28753f9bde
2 changed files with 27 additions and 1 deletions

View File

@ -169,6 +169,7 @@ func (a *App) Diff(c DiffConfigProvider) error {
IncludeCRDs: &includeCRDs,
Validate: c.Validate(),
Concurrency: c.Concurrency(),
IncludeNeeds: c.IncludeNeeds(),
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
}, func() {
msg, matched, affected, errs = a.diff(run, c)

View File

@ -1819,7 +1819,7 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
}
*st = *updated
}
selected, err := st.GetSelectedReleases(opts.IncludeTransitiveNeeds)
selected, err := st.GetSelectedReleasesWithNeeds(opts.IncludeNeeds, opts.IncludeTransitiveNeeds)
if err != nil {
return nil, []error{err}
}
@ -3116,6 +3116,31 @@ func (st *HelmState) GetSelectedReleases(includeTransitiveNeeds bool) ([]Release
return releases, nil
}
func (st *HelmState) GetSelectedReleasesWithNeeds(includeNeeds bool, includeTransitiveNeeds bool) ([]ReleaseSpec, error) {
var filteredReleases []Release
var err error
if includeTransitiveNeeds {
filteredReleases, err = st.SelectReleases(true)
} else if includeNeeds {
filteredReleases, err = st.SelectReleasesWithNeeds(false)
} else {
filteredReleases, err = st.SelectReleases(false)
}
if err != nil {
return nil, err
}
var releases []ReleaseSpec
for _, r := range filteredReleases {
if !r.Filtered {
releases = append(releases, r.ReleaseSpec)
}
}
return releases, nil
}
// FilterReleases allows for the execution of helm commands against a subset of the releases in the helmfile.
func (st *HelmState) FilterReleases(includeTransitiveNeeds bool) error {
releases, err := st.GetSelectedReleases(includeTransitiveNeeds)