parent
cf24d348bf
commit
08f5d6ab08
152
pkg/app/app.go
152
pkg/app/app.go
|
|
@ -133,7 +133,11 @@ func (a *App) Deps(c DepsConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds(), SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipRepos(),
|
||||
IncludeNeeds: c.IncludeTransitiveNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
func (a *App) Repos(c ReposConfigProvider) error {
|
||||
|
|
@ -145,7 +149,11 @@ func (a *App) Repos(c ReposConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds(), SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: !c.IncludeTransitiveNeeds(),
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
// TODO: Remove this function once Helmfile v0.x
|
||||
|
|
@ -164,7 +172,11 @@ func (a *App) DeprecatedSyncCharts(c DeprecatedChartsConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds(), SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: !c.IncludeTransitiveNeeds(),
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
func (a *App) Diff(c DiffConfigProvider) error {
|
||||
|
|
@ -221,7 +233,11 @@ func (a *App) Diff(c DiffConfigProvider) error {
|
|||
}
|
||||
|
||||
return matched, criticalErrs
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -268,7 +284,11 @@ func (a *App) Template(c TemplateConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
}
|
||||
|
||||
func (a *App) WriteValues(c WriteValuesConfigProvider) error {
|
||||
|
|
@ -287,7 +307,11 @@ func (a *App) WriteValues(c WriteValuesConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds(), SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: !c.IncludeTransitiveNeeds(),
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
type MultiError struct {
|
||||
|
|
@ -344,7 +368,11 @@ func (a *App) Lint(c LintConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -374,7 +402,11 @@ func (a *App) Fetch(c FetchConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
func (a *App) Sync(c SyncConfigProvider) error {
|
||||
|
|
@ -399,7 +431,11 @@ func (a *App) Sync(c SyncConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds())
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
}
|
||||
|
||||
func (a *App) Apply(c ApplyConfigProvider) error {
|
||||
|
|
@ -440,7 +476,11 @@ func (a *App) Apply(c ApplyConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, c.IncludeTransitiveNeeds(), opts...)
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
}, opts...)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -470,7 +510,11 @@ func (a *App) Status(c StatusesConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
// TODO: Remove this function once Helmfile v0.x
|
||||
|
|
@ -492,7 +536,11 @@ func (a *App) Delete(c DeleteConfigProvider) error {
|
|||
ok, errs = a.delete(run, c.Purge(), c)
|
||||
}
|
||||
return
|
||||
}, false, SetReverse(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetReverse(true))
|
||||
}
|
||||
|
||||
func (a *App) Destroy(c DestroyConfigProvider) error {
|
||||
|
|
@ -512,7 +560,11 @@ func (a *App) Destroy(c DestroyConfigProvider) error {
|
|||
ok, errs = a.delete(run, true, c)
|
||||
}
|
||||
return
|
||||
}, false, SetReverse(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetReverse(true))
|
||||
}
|
||||
|
||||
func (a *App) Test(c TestConfigProvider) error {
|
||||
|
|
@ -536,7 +588,11 @@ func (a *App) Test(c TestConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
func (a *App) PrintState(c StateConfigProvider) error {
|
||||
|
|
@ -589,7 +645,11 @@ func (a *App) PrintState(c StateConfigProvider) error {
|
|||
}
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetFilter(true))
|
||||
}
|
||||
|
||||
func (a *App) ListReleases(c ListConfigProvider) error {
|
||||
|
|
@ -622,7 +682,11 @@ func (a *App) ListReleases(c ListConfigProvider) error {
|
|||
releases = append(releases, stateReleases...)
|
||||
|
||||
return
|
||||
}, false, SetFilter(true))
|
||||
}, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
}, SetFilter(true))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -962,7 +1026,7 @@ var (
|
|||
}
|
||||
)
|
||||
|
||||
func (a *App) ForEachState(do func(*Run) (bool, []error), includeTransitiveNeeds bool, o ...LoadOption) error {
|
||||
func (a *App) ForEachState(do func(*Run) (bool, []error), needsOptions state.NeedsOptions, o ...LoadOption) error {
|
||||
ctx := NewContext()
|
||||
err := a.visitStatesWithSelectorsAndRemoteSupport(a.FileOrDir, func(st *state.HelmState) (bool, []error) {
|
||||
helm := a.getHelm(st)
|
||||
|
|
@ -972,7 +1036,7 @@ func (a *App) ForEachState(do func(*Run) (bool, []error), includeTransitiveNeeds
|
|||
return false, []error{err}
|
||||
}
|
||||
return do(run)
|
||||
}, includeTransitiveNeeds, o...)
|
||||
}, needsOptions, o...)
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
@ -1051,7 +1115,7 @@ type Opts struct {
|
|||
DAGEnabled bool
|
||||
}
|
||||
|
||||
func (a *App) visitStatesWithSelectorsAndRemoteSupport(fileOrDir string, converge func(*state.HelmState) (bool, []error), includeTransitiveNeeds bool, opt ...LoadOption) error {
|
||||
func (a *App) visitStatesWithSelectorsAndRemoteSupport(fileOrDir string, converge func(*state.HelmState) (bool, []error), needsOptions state.NeedsOptions, opt ...LoadOption) error {
|
||||
opts := LoadOpts{
|
||||
Selectors: a.Selectors,
|
||||
}
|
||||
|
|
@ -1083,7 +1147,7 @@ func (a *App) visitStatesWithSelectorsAndRemoteSupport(fileOrDir string, converg
|
|||
_, err := converge(st)
|
||||
return err
|
||||
},
|
||||
includeTransitiveNeeds)
|
||||
needsOptions)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1096,9 +1160,9 @@ func (a *App) visitStatesWithSelectorsAndRemoteSupport(fileOrDir string, converg
|
|||
return a.visitStates(fileOrDir, opts, fHelmStatsWithOverrides)
|
||||
}
|
||||
|
||||
func processFilteredReleases(st *state.HelmState, converge func(st *state.HelmState) []error, includeTransitiveNeeds bool) (bool, []error) {
|
||||
func processFilteredReleases(st *state.HelmState, converge func(st *state.HelmState) []error, needsOptions state.NeedsOptions) (bool, []error) {
|
||||
if len(st.Selectors) > 0 {
|
||||
err := st.FilterReleases(includeTransitiveNeeds)
|
||||
err := st.FilterReleases(needsOptions)
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1144,11 +1208,11 @@ func checkDuplicates(releases []state.ReleaseSpec) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (a *App) Wrap(converge func(*state.HelmState, helmexec.Interface) []error) func(st *state.HelmState, helm helmexec.Interface, includeTransitiveNeeds bool) (bool, []error) {
|
||||
return func(st *state.HelmState, helm helmexec.Interface, includeTransitiveNeeds bool) (bool, []error) {
|
||||
func (a *App) Wrap(converge func(*state.HelmState, helmexec.Interface) []error) func(st *state.HelmState, helm helmexec.Interface, needsOptions state.NeedsOptions) (bool, []error) {
|
||||
return func(st *state.HelmState, helm helmexec.Interface, needsOptions state.NeedsOptions) (bool, []error) {
|
||||
return processFilteredReleases(st, func(st *state.HelmState) []error {
|
||||
return converge(st, helm)
|
||||
}, includeTransitiveNeeds)
|
||||
}, needsOptions)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1247,8 +1311,8 @@ func (a *App) findDesiredStateFiles(specifiedPath string, opts LoadOpts) ([]stri
|
|||
return files, nil
|
||||
}
|
||||
|
||||
func (a *App) getSelectedReleases(r *Run, includeTransitiveNeeds bool) ([]state.ReleaseSpec, []state.ReleaseSpec, error) {
|
||||
selected, err := r.state.GetSelectedReleases(includeTransitiveNeeds)
|
||||
func (a *App) getSelectedReleases(r *Run, needsOptions state.NeedsOptions) ([]state.ReleaseSpec, []state.ReleaseSpec, error) {
|
||||
selected, err := r.state.GetSelectedReleases(needsOptions)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
|
@ -1326,7 +1390,11 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) {
|
|||
|
||||
helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state, nil)...)
|
||||
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, c.IncludeTransitiveNeeds())
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
if err != nil {
|
||||
return false, false, []error{err}
|
||||
}
|
||||
|
|
@ -1517,7 +1585,11 @@ func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error
|
|||
|
||||
affectedReleases := state.AffectedReleases{}
|
||||
|
||||
toSync, _, err := a.getSelectedReleases(r, false)
|
||||
toSync, _, err := a.getSelectedReleases(r, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1670,7 +1742,11 @@ func (a *App) status(r *Run, c StatusesConfigProvider) (bool, []error) {
|
|||
|
||||
allReleases := st.Releases
|
||||
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, false)
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1720,7 +1796,11 @@ func (a *App) sync(r *Run, c SyncConfigProvider) (bool, []error) {
|
|||
st := r.state
|
||||
helm := r.helm
|
||||
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, c.IncludeTransitiveNeeds())
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -1918,7 +1998,11 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
|||
func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state.HelmState) []error) (bool, []error) {
|
||||
st := r.state
|
||||
|
||||
selectedReleases, deduplicated, err := a.getSelectedReleases(r, c.IncludeTransitiveNeeds())
|
||||
selectedReleases, deduplicated, err := a.getSelectedReleases(r, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
IncludeNeeds: c.IncludeNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -2001,7 +2085,7 @@ func (a *App) test(r *Run, c TestConfigProvider) []error {
|
|||
|
||||
st := r.state
|
||||
|
||||
toTest, _, err := a.getSelectedReleases(r, false)
|
||||
toTest, _, err := a.getSelectedReleases(r, state.NeedsOptions{})
|
||||
if err != nil {
|
||||
return []error{err}
|
||||
}
|
||||
|
|
@ -2023,7 +2107,7 @@ func (a *App) writeValues(r *Run, c WriteValuesConfigProvider) (bool, []error) {
|
|||
st := r.state
|
||||
helm := r.helm
|
||||
|
||||
toRender, _, err := a.getSelectedReleases(r, false)
|
||||
toRender, _, err := a.getSelectedReleases(r, state.NeedsOptions{})
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,7 +110,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -162,7 +166,11 @@ BAZ: 4
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -204,7 +212,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err == nil {
|
||||
|
|
@ -249,7 +261,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -301,7 +317,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if testcase.expectErr && err == nil {
|
||||
|
|
@ -368,7 +388,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if testcase.expectErr && err == nil {
|
||||
|
|
@ -423,7 +447,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
Noop,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if testcase.expectErr && err == nil {
|
||||
|
|
@ -537,7 +565,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if testcase.expectErr {
|
||||
|
|
@ -778,7 +810,11 @@ func runFilterSubHelmFilesTests(testcases []struct {
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if testcase.expectErr {
|
||||
|
|
@ -864,7 +900,11 @@ ns: INLINE_NS
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
|
||||
|
|
@ -961,7 +1001,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetReverse(testcase.reverse),
|
||||
SetFilter(true),
|
||||
)
|
||||
|
|
@ -1027,7 +1071,11 @@ bar: "bar1"
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -1148,7 +1196,11 @@ x:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -1199,7 +1251,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -1255,7 +1311,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
@ -1304,7 +1364,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
|
||||
|
|
@ -1346,7 +1410,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
|
||||
|
|
@ -1392,7 +1460,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
|
||||
|
|
@ -4234,7 +4306,11 @@ releases:
|
|||
|
||||
err := app.ForEachState(
|
||||
collectReleases,
|
||||
false,
|
||||
state.NeedsOptions{
|
||||
IncludeTransitiveNeeds: false,
|
||||
IncludeNeeds: false,
|
||||
SkipNeeds: true,
|
||||
},
|
||||
SetFilter(true),
|
||||
)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -107,7 +107,11 @@ func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepare
|
|||
func (r *Run) Deps(c DepsConfigProvider) []error {
|
||||
r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state, nil)...)
|
||||
|
||||
return r.state.UpdateDeps(r.helm, c.IncludeTransitiveNeeds())
|
||||
return r.state.UpdateDeps(r.helm, state.NeedsOptions{
|
||||
SkipNeeds: c.SkipRepos(),
|
||||
IncludeNeeds: c.IncludeTransitiveNeeds(),
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
})
|
||||
}
|
||||
|
||||
func (r *Run) Repos(c ReposConfigProvider) error {
|
||||
|
|
|
|||
|
|
@ -112,7 +112,11 @@ func TestSelectReleasesWithOverrides(t *testing.T) {
|
|||
|
||||
state.Releases = state.GetReleasesWithOverrides()
|
||||
|
||||
rs, err := state.GetSelectedReleases(false)
|
||||
rs, err := state.GetSelectedReleases(NeedsOptions{
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
SkipNeeds: true,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("%s %s: %v", tc.selector, tc.subject, err)
|
||||
}
|
||||
|
|
@ -182,7 +186,11 @@ func TestSelectReleasesWithOverridesWithIncludedTransitives(t *testing.T) {
|
|||
state.Selectors = tc.selector
|
||||
state.Releases = state.GetReleasesWithOverrides()
|
||||
|
||||
rs, err := state.GetSelectedReleases(tc.includeTransitiveNeeds)
|
||||
rs, err := state.GetSelectedReleases(NeedsOptions{
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: tc.includeTransitiveNeeds,
|
||||
SkipNeeds: !tc.includeTransitiveNeeds,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("%s %s: %v", tc.selector, tc.subject, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1046,6 +1046,7 @@ type ChartPrepareOptions struct {
|
|||
OutputDirTemplate string
|
||||
IncludeTransitiveNeeds bool
|
||||
IncludeNeeds bool
|
||||
SkipNeeds bool
|
||||
Concurrency int
|
||||
KubeVersion string
|
||||
Set []string
|
||||
|
|
@ -1103,7 +1104,11 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
|
|||
|
||||
// This and releasesNeedCharts ensures that we run operations like helm-dep-build and prepare-hook calls only on
|
||||
// releases that are (1) selected by the selectors and (2) to be installed.
|
||||
selected, err = st.GetSelectedReleases(opts.IncludeTransitiveNeeds)
|
||||
selected, err = st.GetSelectedReleases(NeedsOptions{
|
||||
IncludeTransitiveNeeds: opts.IncludeTransitiveNeeds,
|
||||
IncludeNeeds: opts.IncludeNeeds,
|
||||
SkipNeeds: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, []error{err}
|
||||
}
|
||||
|
|
@ -2155,16 +2160,16 @@ func (st *HelmState) GetReleasesWithOverrides() []ReleaseSpec {
|
|||
return rs
|
||||
}
|
||||
|
||||
func (st *HelmState) SelectReleases(includeTransitiveNeeds bool) ([]Release, error) {
|
||||
func (st *HelmState) SelectReleases(needsOptions NeedsOptions) ([]Release, error) {
|
||||
values := st.Values()
|
||||
rs, err := markExcludedReleases(st.Releases, st.Selectors, st.CommonLabels, values, includeTransitiveNeeds)
|
||||
rs, err := markExcludedReleases(st.Releases, st.Selectors, st.CommonLabels, values, needsOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rs, nil
|
||||
}
|
||||
|
||||
func markExcludedReleases(releases []ReleaseSpec, selectors []string, commonLabels map[string]string, values map[string]any, includeTransitiveNeeds bool) ([]Release, error) {
|
||||
func markExcludedReleases(releases []ReleaseSpec, selectors []string, commonLabels map[string]string, values map[string]any, needsOptions NeedsOptions) ([]Release, error) {
|
||||
var filteredReleases []Release
|
||||
filters := []ReleaseFilter{}
|
||||
for _, label := range selectors {
|
||||
|
|
@ -2209,7 +2214,12 @@ func markExcludedReleases(releases []ReleaseSpec, selectors []string, commonLabe
|
|||
}
|
||||
filteredReleases = append(filteredReleases, res)
|
||||
}
|
||||
unmarkNeeds(filteredReleases, releases, includeTransitiveNeeds)
|
||||
if needsOptions.SkipNeeds {
|
||||
return filteredReleases, nil
|
||||
}
|
||||
if needsOptions.IncludeTransitiveNeeds || needsOptions.IncludeNeeds {
|
||||
unmarkNeeds(filteredReleases, releases, needsOptions.IncludeTransitiveNeeds)
|
||||
}
|
||||
return filteredReleases, nil
|
||||
}
|
||||
|
||||
|
|
@ -2279,8 +2289,8 @@ func collectNeeds(release ReleaseSpec, allReleases []ReleaseSpec, needs map[stri
|
|||
}
|
||||
}
|
||||
|
||||
func (st *HelmState) GetSelectedReleases(includeTransitiveNeeds bool) ([]ReleaseSpec, error) {
|
||||
filteredReleases, err := st.SelectReleases(includeTransitiveNeeds)
|
||||
func (st *HelmState) GetSelectedReleases(needsOptions NeedsOptions) ([]ReleaseSpec, error) {
|
||||
filteredReleases, err := st.SelectReleases(needsOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -2295,8 +2305,8 @@ func (st *HelmState) GetSelectedReleases(includeTransitiveNeeds bool) ([]Release
|
|||
}
|
||||
|
||||
// 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)
|
||||
func (st *HelmState) FilterReleases(needsOptions NeedsOptions) error {
|
||||
releases, err := st.GetSelectedReleases(needsOptions)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -2376,7 +2386,7 @@ func (st *HelmState) ResolveDeps() (*HelmState, error) {
|
|||
}
|
||||
|
||||
// UpdateDeps wrapper for updating dependencies on the releases
|
||||
func (st *HelmState) UpdateDeps(helm helmexec.Interface, includeTransitiveNeeds bool) []error {
|
||||
func (st *HelmState) UpdateDeps(helm helmexec.Interface, needsOptions NeedsOptions) []error {
|
||||
var selected []ReleaseSpec
|
||||
|
||||
if len(st.Selectors) > 0 {
|
||||
|
|
@ -2384,7 +2394,7 @@ func (st *HelmState) UpdateDeps(helm helmexec.Interface, includeTransitiveNeeds
|
|||
|
||||
// This and releasesNeedCharts ensures that we run operations like helm-dep-build and prepare-hook calls only on
|
||||
// releases that are (1) selected by the selectors and (2) to be installed.
|
||||
selected, err = st.GetSelectedReleases(includeTransitiveNeeds)
|
||||
selected, err = st.GetSelectedReleases(needsOptions)
|
||||
if err != nil {
|
||||
return []error{err}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,12 @@ func (st *HelmState) iterateOnReleases(helm helmexec.Interface, concurrency int,
|
|||
return nil
|
||||
}
|
||||
|
||||
type NeedsOptions struct {
|
||||
IncludeNeeds bool
|
||||
IncludeTransitiveNeeds bool
|
||||
SkipNeeds bool
|
||||
}
|
||||
|
||||
type PlanOptions struct {
|
||||
Purpose string
|
||||
Reverse bool
|
||||
|
|
@ -99,7 +105,11 @@ type PlanOptions struct {
|
|||
}
|
||||
|
||||
func (st *HelmState) PlanReleases(opts PlanOptions) ([][]ReleaseSpec, error) {
|
||||
marked, err := st.GetSelectedReleases(opts.IncludeTransitiveNeeds)
|
||||
marked, err := st.GetSelectedReleases(NeedsOptions{
|
||||
IncludeNeeds: opts.IncludeNeeds,
|
||||
IncludeTransitiveNeeds: opts.IncludeTransitiveNeeds,
|
||||
SkipNeeds: opts.SkipNeeds,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2143,7 +2143,11 @@ generated: 2019-05-16T15:42:45.50486+09:00
|
|||
})
|
||||
fs.Cwd = basePath
|
||||
state = injectFs(state, fs)
|
||||
errs := state.UpdateDeps(helm, false)
|
||||
errs := state.UpdateDeps(helm, NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
})
|
||||
|
||||
want := []string{"/example", "./example", generatedDir}
|
||||
if !reflect.DeepEqual(helm.Charts, want) {
|
||||
|
|
@ -2567,7 +2571,11 @@ func TestHelmState_NoReleaseMatched(t *testing.T) {
|
|||
RenderedValues: map[string]any{},
|
||||
}
|
||||
state.Selectors = []string{tt.labels}
|
||||
errs := state.FilterReleases(false)
|
||||
errs := state.FilterReleases(NeedsOptions{
|
||||
SkipNeeds: true,
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
})
|
||||
if (errs != nil) != tt.wantErr {
|
||||
t.Errorf("ReleaseStatuses() for %s error = %v, wantErr %v", tt.name, errs, tt.wantErr)
|
||||
return
|
||||
|
|
|
|||
Loading…
Reference in New Issue