From 3cc8acb31a567a6561bc07b85a45a4d380a8ef5d Mon Sep 17 00:00:00 2001 From: Hubertbits <170125456+hubertbits@users.noreply.github.com> Date: Fri, 11 Apr 2025 23:10:53 +0200 Subject: [PATCH] Add uml diagrams as reference for original implementation complexity Signed-off-by: yxxhero --- docs/reference/cmd.puml | 367 +++++ docs/reference/cmd.svg | 480 ++++++ docs/reference/cmd_diff.puml | 156 ++ docs/reference/cmd_diff.svg | 188 +++ docs/reference/graph.puml | 2402 ++++++++++++++++++++++++++++ docs/reference/graph.svg | 2849 ++++++++++++++++++++++++++++++++++ 6 files changed, 6442 insertions(+) create mode 100644 docs/reference/cmd.puml create mode 100644 docs/reference/cmd.svg create mode 100644 docs/reference/cmd_diff.puml create mode 100644 docs/reference/cmd_diff.svg create mode 100644 docs/reference/graph.puml create mode 100644 docs/reference/graph.svg diff --git a/docs/reference/cmd.puml b/docs/reference/cmd.puml new file mode 100644 index 00000000..b94b1d84 --- /dev/null +++ b/docs/reference/cmd.puml @@ -0,0 +1,367 @@ +@startuml "Helmfile Commands Flow" + +' Color scheme - eye-friendly colors with darker headers +skinparam { + ClassBackgroundColor #E8F4F9 + ClassHeaderBackgroundColor #5D8AA8 + ClassFontColor #000000 + ClassStereotypeFontColor #FFFFFF + ClassAttributeFontColor #000000 + ClassFontStyle bold + + PackageBackgroundColor #F5F5F5 + PackageBorderColor #DDDDDD + + NoteBackgroundColor #FFF8DC + NoteBorderColor #DCDCAA + + ArrowColor #5D8AA8 +} + +package "cmd" { + class "RootCmd" as RootCmd { + +Execute(): error + } + + class "DiffCmd" as DiffCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "ApplyCmd" as ApplyCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "SyncCmd" as SyncCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "TemplateCmd" as TemplateCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "LintCmd" as LintCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "StatusCmd" as StatusCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "DeleteCmd" as DeleteCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "TestCmd" as TestCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "FetchCmd" as FetchCmd { + +RunE(cmd *cobra.Command, args []string): error + } + + class "WriteValuesCmd" as WriteValuesCmd { + +RunE(cmd *cobra.Command, args []string): error + } +} + +package "pkg/config" { + interface "ConfigProvider" as ConfigProvider { + +KubeContext(): string + +HelmBinary(): string + +Logger(): *zap.SugaredLogger + +Args(): string + +...() + } + + interface "DiffConfigProvider" as DiffConfigProvider { + +DiffArgs(): string + +DetailedExitcode(): bool + +...() + } + + interface "ApplyConfigProvider" as ApplyConfigProvider { + +SyncArgs(): string + +Wait(): bool + +...() + } + + interface "SyncConfigProvider" as SyncConfigProvider { + +SyncArgs(): string + +Wait(): bool + +...() + } + + interface "TemplateConfigProvider" as TemplateConfigProvider { + +OutputDir(): string + +IncludeCRDs(): bool + +...() + } + + interface "LintConfigProvider" as LintConfigProvider { + +Values(): []string + +Set(): []string + +...() + } + + interface "StatusesConfigProvider" as StatusesConfigProvider { + +Args(): string + +...() + } + + interface "DestroyConfigProvider" as DestroyConfigProvider { + +Args(): string + +Cascade(): string + +...() + } + + interface "TestConfigProvider" as TestConfigProvider { + +Cleanup(): bool + +Logs(): bool + +...() + } + + interface "FetchConfigProvider" as FetchConfigProvider { + +OutputDir(): string + +...() + } + + interface "WriteValuesConfigProvider" as WriteValuesConfigProvider { + +OutputFileTemplate(): string + +...() + } + + class "GlobalImpl" as GlobalImpl { + +GlobalOptions: *GlobalOptions + +...() + } + + class "DiffImpl" as DiffImpl { + +GlobalImpl: *GlobalImpl + +DiffOptions: *DiffOptions + +...() + } + + class "ApplyImpl" as ApplyImpl { + +GlobalImpl: *GlobalImpl + +ApplyOptions: *ApplyOptions + +...() + } + + class "SyncImpl" as SyncImpl { + +GlobalImpl: *GlobalImpl + +SyncOptions: *SyncOptions + +...() + } + + class "TemplateImpl" as TemplateImpl { + +GlobalImpl: *GlobalImpl + +TemplateOptions: *TemplateOptions + +...() + } + + class "LintImpl" as LintImpl { + +GlobalImpl: *GlobalImpl + +LintOptions: *LintOptions + +...() + } + + class "StatusImpl" as StatusImpl { + +GlobalImpl: *GlobalImpl + +StatusOptions: *StatusOptions + +...() + } + + class "DestroyImpl" as DestroyImpl { + +GlobalImpl: *GlobalImpl + +DestroyOptions: *DestroyOptions + +...() + } + + class "TestImpl" as TestImpl { + +GlobalImpl: *GlobalImpl + +TestOptions: *TestOptions + +...() + } + + class "FetchImpl" as FetchImpl { + +GlobalImpl: *GlobalImpl + +FetchOptions: *FetchOptions + +...() + } + + class "WriteValuesImpl" as WriteValuesImpl { + +GlobalImpl: *GlobalImpl + +WriteValuesOptions: *WriteValuesOptions + +...() + } +} + +package "pkg/app" { + class "App" as App { + +OverrideKubeContext: string + +OverrideHelmBinary: string + +Logger: *zap.SugaredLogger + +... + +New(conf ConfigProvider): *App + +Diff(c DiffConfigProvider): error + +Apply(c ApplyConfigProvider): error + +Sync(c SyncConfigProvider): error + +Template(c TemplateConfigProvider): error + +Lint(c LintConfigProvider): error + +Status(c StatusesConfigProvider): error + +Destroy(c DestroyConfigProvider): error + +Test(c TestConfigProvider): error + +Fetch(c FetchConfigProvider): error + +WriteValues(c WriteValuesConfigProvider): error + +...() + } + + class "Run" as Run { + +state: *state.HelmState + +helm: helmexec.Interface + +ctx: Context + +ReleaseToChart: map[state.PrepareChartKey]string + +... + +diff(...): (...) + +withPreparedCharts(...): error + +...() + } +} + +package "pkg/state" { + class "HelmState" as HelmState { + +FilePath: string + +Releases: []ReleaseSpec + +... + +DiffReleases(...): ([]ReleaseSpec, []error) + +SyncReleases(...): []error + +TemplateReleases(...): []error + +LintReleases(...): []error + +ReleaseStatuses(...): []error + +DeleteReleases(...): []error + +TestReleases(...): []error + +WriteReleasesValues(...): []error + +PrepareCharts(...): (map[PrepareChartKey]string, []error) + +...() + } +} + +package "pkg/helmexec" { + interface "Interface" as HelmExec { + +SetExtraArgs(...string) + +DiffRelease(...): error + +SyncRelease(...): error + +TemplateRelease(...): error + +Lint(...): error + +ReleaseStatus(...): error + +DeleteRelease(...): error + +TestRelease(...): error + +...() + } +} + +' Root command relationships +RootCmd --> DiffCmd : adds subcommand +RootCmd --> ApplyCmd : adds subcommand +RootCmd --> SyncCmd : adds subcommand +RootCmd --> TemplateCmd : adds subcommand +RootCmd --> LintCmd : adds subcommand +RootCmd --> StatusCmd : adds subcommand +RootCmd --> DeleteCmd : adds subcommand +RootCmd --> TestCmd : adds subcommand +RootCmd --> FetchCmd : adds subcommand +RootCmd --> WriteValuesCmd : adds subcommand + +' Command to Config Impl relationships +DiffCmd --> DiffImpl : creates +ApplyCmd --> ApplyImpl : creates +SyncCmd --> SyncImpl : creates +TemplateCmd --> TemplateImpl : creates +LintCmd --> LintImpl : creates +StatusCmd --> StatusImpl : creates +DeleteCmd --> DestroyImpl : creates +TestCmd --> TestImpl : creates +FetchCmd --> FetchImpl : creates +WriteValuesCmd --> WriteValuesImpl : creates + +' Command to App relationships +DiffCmd --> App : creates and uses +ApplyCmd --> App : creates and uses +SyncCmd --> App : creates and uses +TemplateCmd --> App : creates and uses +LintCmd --> App : creates and uses +StatusCmd --> App : creates and uses +DeleteCmd --> App : creates and uses +TestCmd --> App : creates and uses +FetchCmd --> App : creates and uses +WriteValuesCmd --> App : creates and uses + +' Config interface implementations +DiffConfigProvider <|.. DiffImpl : implements +ApplyConfigProvider <|.. ApplyImpl : implements +SyncConfigProvider <|.. SyncImpl : implements +TemplateConfigProvider <|.. TemplateImpl : implements +LintConfigProvider <|.. LintImpl : implements +StatusesConfigProvider <|.. StatusImpl : implements +DestroyConfigProvider <|.. DestroyImpl : implements +TestConfigProvider <|.. TestImpl : implements +FetchConfigProvider <|.. FetchImpl : implements +WriteValuesConfigProvider <|.. WriteValuesImpl : implements + +ConfigProvider <|.. GlobalImpl : implements +GlobalImpl <-- DiffImpl : contains +GlobalImpl <-- ApplyImpl : contains +GlobalImpl <-- SyncImpl : contains +GlobalImpl <-- TemplateImpl : contains +GlobalImpl <-- LintImpl : contains +GlobalImpl <-- StatusImpl : contains +GlobalImpl <-- DestroyImpl : contains +GlobalImpl <-- TestImpl : contains +GlobalImpl <-- FetchImpl : contains +GlobalImpl <-- WriteValuesImpl : contains + +' App relationships +App --> Run : creates and uses +App ..> DiffConfigProvider : uses for Diff() +App ..> ApplyConfigProvider : uses for Apply() +App ..> SyncConfigProvider : uses for Sync() +App ..> TemplateConfigProvider : uses for Template() +App ..> LintConfigProvider : uses for Lint() +App ..> StatusesConfigProvider : uses for Status() +App ..> DestroyConfigProvider : uses for Destroy() +App ..> TestConfigProvider : uses for Test() +App ..> FetchConfigProvider : uses for Fetch() +App ..> WriteValuesConfigProvider : uses for WriteValues() + +' Run relationships +Run --> HelmState : operates on +Run --> HelmExec : executes helm commands + +' State relationships +HelmState ..> HelmExec : uses for helm operations + +note right of RootCmd + Command Flow: + 1. Root command adds subcommands + 2. Each subcommand parses flags into its Config implementation + 3. Creates App with Config implementation + 4. Calls corresponding App method +end note + +note right of App + App Flow: + 1. ForEachState() loads state files + 2. Creates Run instances + 3. Calls appropriate Run methods + 4. Run methods use HelmState for operations +end note + +note right of Run + Run Flow: + 1. withPreparedCharts() prepares charts + 2. Command-specific methods execute operations + 3. Uses HelmState for actual operations + 4. HelmState uses helmexec interface +end note + +@enduml diff --git a/docs/reference/cmd.svg b/docs/reference/cmd.svg new file mode 100644 index 00000000..3427199b --- /dev/null +++ b/docs/reference/cmd.svg @@ -0,0 +1,480 @@ +cmdpkg/configpkg/apppkg/statepkg/helmexecRootCmdExecute(): errorDiffCmdRunE(cmd *cobra.Command, args []string): errorApplyCmdRunE(cmd *cobra.Command, args []string): errorSyncCmdRunE(cmd *cobra.Command, args []string): errorTemplateCmdRunE(cmd *cobra.Command, args []string): errorLintCmdRunE(cmd *cobra.Command, args []string): errorStatusCmdRunE(cmd *cobra.Command, args []string): errorDeleteCmdRunE(cmd *cobra.Command, args []string): errorTestCmdRunE(cmd *cobra.Command, args []string): errorFetchCmdRunE(cmd *cobra.Command, args []string): errorWriteValuesCmdRunE(cmd *cobra.Command, args []string): errorConfigProviderKubeContext(): stringHelmBinary(): stringLogger(): *zap.SugaredLoggerArgs(): string...()DiffConfigProviderDiffArgs(): stringDetailedExitcode(): bool...()ApplyConfigProviderSyncArgs(): stringWait(): bool...()SyncConfigProviderSyncArgs(): stringWait(): bool...()TemplateConfigProviderOutputDir(): stringIncludeCRDs(): bool...()LintConfigProviderValues(): []stringSet(): []string...()StatusesConfigProviderArgs(): string...()DestroyConfigProviderArgs(): stringCascade(): string...()TestConfigProviderCleanup(): boolLogs(): bool...()FetchConfigProviderOutputDir(): string...()WriteValuesConfigProviderOutputFileTemplate(): string...()GlobalImplGlobalOptions: *GlobalOptions...()DiffImplGlobalImpl: *GlobalImplDiffOptions: *DiffOptions...()ApplyImplGlobalImpl: *GlobalImplApplyOptions: *ApplyOptions...()SyncImplGlobalImpl: *GlobalImplSyncOptions: *SyncOptions...()TemplateImplGlobalImpl: *GlobalImplTemplateOptions: *TemplateOptions...()LintImplGlobalImpl: *GlobalImplLintOptions: *LintOptions...()StatusImplGlobalImpl: *GlobalImplStatusOptions: *StatusOptions...()DestroyImplGlobalImpl: *GlobalImplDestroyOptions: *DestroyOptions...()TestImplGlobalImpl: *GlobalImplTestOptions: *TestOptions...()FetchImplGlobalImpl: *GlobalImplFetchOptions: *FetchOptions...()WriteValuesImplGlobalImpl: *GlobalImplWriteValuesOptions: *WriteValuesOptions...()AppOverrideKubeContext: stringOverrideHelmBinary: stringLogger: *zap.SugaredLogger...New(conf ConfigProvider): *AppDiff(c DiffConfigProvider): errorApply(c ApplyConfigProvider): errorSync(c SyncConfigProvider): errorTemplate(c TemplateConfigProvider): errorLint(c LintConfigProvider): errorStatus(c StatusesConfigProvider): errorDestroy(c DestroyConfigProvider): errorTest(c TestConfigProvider): errorFetch(c FetchConfigProvider): errorWriteValues(c WriteValuesConfigProvider): error...()Runstate: *state.HelmStatehelm: helmexec.Interfacectx: ContextReleaseToChart: map[state.PrepareChartKey]string...diff(...): (...)withPreparedCharts(...): error...()HelmStateFilePath: stringReleases: []ReleaseSpec...DiffReleases(...): ([]ReleaseSpec, []error)SyncReleases(...): []errorTemplateReleases(...): []errorLintReleases(...): []errorReleaseStatuses(...): []errorDeleteReleases(...): []errorTestReleases(...): []errorWriteReleasesValues(...): []errorPrepareCharts(...): (map[PrepareChartKey]string, []error)...()InterfaceSetExtraArgs(...string)DiffRelease(...): errorSyncRelease(...): errorTemplateRelease(...): errorLint(...): errorReleaseStatus(...): errorDeleteRelease(...): errorTestRelease(...): error...()Command Flow:1. Root command adds subcommands2. Each subcommand parses flags into its Config implementation3. Creates App with Config implementation4. Calls corresponding App methodApp Flow:1. ForEachState() loads state files2. Creates Run instances3. Calls appropriate Run methods4. Run methods use HelmState for operationsRun Flow:1. withPreparedCharts() prepares charts2. Command-specific methods execute operations3. Uses HelmState for actual operations4. HelmState uses helmexec interfaceadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandadds subcommandcreatescreatescreatescreatescreatescreatescreatescreatescreatescreatescreates and usescreates and usescreates and usescreates and usescreates and usescreates and usescreates and usescreates and usescreates and usescreates and usesimplementsimplementsimplementsimplementsimplementsimplementsimplementsimplementsimplementsimplementsimplementscontainscontainscontainscontainscontainscontainscontainscontainscontainscontainscreates and usesuses for Diff()uses for Apply()uses for Sync()uses for Template()uses for Lint()uses for Status()uses for Destroy()uses for Test()uses for Fetch()uses for WriteValues()operates onexecutes helm commandsuses for helm operations \ No newline at end of file diff --git a/docs/reference/cmd_diff.puml b/docs/reference/cmd_diff.puml new file mode 100644 index 00000000..2c7a9175 --- /dev/null +++ b/docs/reference/cmd_diff.puml @@ -0,0 +1,156 @@ +@startuml "Helmfile Command Flow - Diff" + +' Color scheme - eye-friendly colors with darker headers +skinparam { + ClassBackgroundColor #E8F4F9 + ClassHeaderBackgroundColor #5D8AA8 + ClassFontColor #000000 + ClassStereotypeFontColor #FFFFFF + ClassAttributeFontColor #000000 + ClassFontStyle bold + + PackageBackgroundColor #F5F5F5 + PackageBorderColor #DDDDDD + + NoteBackgroundColor #FFF8DC + NoteBorderColor #DCDCAA + + ArrowColor #5D8AA8 +} + +package "cmd" { + class "Command (e.g. DiffCmd)" as Command { + +RunE(cmd *cobra.Command, args []string): error + } +} + +package "pkg/config" { + interface "ConfigProvider" as ConfigProvider { + +KubeContext(): string + +HelmBinary(): string + +Logger(): *zap.SugaredLogger + +Args(): string + +...() + } + + interface "DiffConfigProvider" as DiffConfigProvider { + +DiffArgs(): string + +DetailedExitcode(): bool + +IncludeTests(): bool + +SkipDiffOnInstall(): bool + +...() + } + + class "DiffImpl" as DiffImpl { + +GlobalImpl: *GlobalImpl + +DiffOptions: *DiffOptions + +Concurrency(): int + +IncludeNeeds(): bool + +Set(): []string + +...() + } +} + +package "pkg/app" { + class "App" as App { + +OverrideKubeContext: string + +OverrideHelmBinary: string + +Logger: *zap.SugaredLogger + +... + +New(conf ConfigProvider): *App + +Diff(c DiffConfigProvider): error + +Apply(c ApplyConfigProvider): error + +...() + } + + class "Run" as Run { + +state: *state.HelmState + +helm: helmexec.Interface + +ctx: Context + +ReleaseToChart: map[state.PrepareChartKey]string + +... + +diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts): (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error) + +withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()): error + +...() + } +} + +package "pkg/state" { + class "HelmState" as HelmState { + +FilePath: string + +Releases: []ReleaseSpec + +... + +DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, ...): ([]ReleaseSpec, []error) + +PrepareCharts(helm helmexec.Interface, dir string, concurrency int, ...): (map[PrepareChartKey]string, []error) + +...() + } + + class "DiffOpts" as DiffOpts { + +Context: int + +Output: string + +Color: bool + +NoColor: bool + +Set: []string + +... + } +} + +package "pkg/helmexec" { + interface "Interface" as HelmExec { + +SetExtraArgs(...string) + +DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string): error + +SyncRelease(context HelmContext, name, chart, namespace string, flags ...string): error + +...() + } +} + +' Command flow +Command --> DiffImpl : creates +Command --> App : creates and uses + +' Config relationships +DiffConfigProvider <|.. DiffImpl : implements +ConfigProvider <|.. DiffImpl : implements + +' App relationships +App --> Run : creates and uses +App ..> DiffConfigProvider : uses + +' Run relationships +Run --> HelmState : operates on +Run --> HelmExec : executes helm commands +Run ..> DiffOpts : configures diff options + +' State relationships +HelmState ..> HelmExec : uses for helm operations +HelmState ..> DiffOpts : uses for diff configuration + +note right of Command + Command Flow: + 1. Parse flags into DiffImpl + 2. Create App with DiffImpl + 3. Call App.Diff() +end note + +note right of App + App Flow: + 1. ForEachState() loads state files + 2. Creates Run instances + 3. Calls Run.diff() +end note + +note right of Run + Run Flow: + 1. withPreparedCharts() prepares charts + 2. diff() plans and executes diff operation + 3. Uses HelmState.DiffReleases() for actual diff +end note + +note right of HelmState + HelmState Flow: + 1. prepareDiffReleases() prepares flags and options + 2. DiffReleases() executes helm diff via helmexec + 3. Returns affected releases and errors +end note + +@enduml diff --git a/docs/reference/cmd_diff.svg b/docs/reference/cmd_diff.svg new file mode 100644 index 00000000..3eaf1dd1 --- /dev/null +++ b/docs/reference/cmd_diff.svg @@ -0,0 +1,188 @@ +cmdpkg/configpkg/apppkg/statepkg/helmexecCommand (e.g. DiffCmd)RunE(cmd *cobra.Command, args []string): errorConfigProviderKubeContext(): stringHelmBinary(): stringLogger(): *zap.SugaredLoggerArgs(): string...()DiffConfigProviderDiffArgs(): stringDetailedExitcode(): boolIncludeTests(): boolSkipDiffOnInstall(): bool...()DiffImplGlobalImpl: *GlobalImplDiffOptions: *DiffOptionsConcurrency(): intIncludeNeeds(): boolSet(): []string...()AppOverrideKubeContext: stringOverrideHelmBinary: stringLogger: *zap.SugaredLogger...New(conf ConfigProvider): *AppDiff(c DiffConfigProvider): errorApply(c ApplyConfigProvider): error...()Runstate: *state.HelmStatehelm: helmexec.Interfacectx: ContextReleaseToChart: map[state.PrepareChartKey]string...diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts): (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error)withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()): error...()HelmStateFilePath: stringReleases: []ReleaseSpec...DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, ...): ([]ReleaseSpec, []error)PrepareCharts(helm helmexec.Interface, dir string, concurrency int, ...): (map[PrepareChartKey]string, []error)...()DiffOptsContext: intOutput: stringColor: boolNoColor: boolSet: []string...InterfaceSetExtraArgs(...string)DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string): errorSyncRelease(context HelmContext, name, chart, namespace string, flags ...string): error...()Command Flow:1. Parse flags into DiffImpl2. Create App with DiffImpl3. Call App.Diff()App Flow:1. ForEachState() loads state files2. Creates Run instances3. Calls Run.diff()Run Flow:1. withPreparedCharts() prepares charts2. diff() plans and executes diff operation3. Uses HelmState.DiffReleases() for actual diffHelmState Flow:1. prepareDiffReleases() prepares flags and options2. DiffReleases() executes helm diff via helmexec3. Returns affected releases and errorscreatescreates and usesimplementsimplementscreates and usesusesoperates onexecutes helm commandsconfigures diff optionsuses for helm operationsuses for diff configuration \ No newline at end of file diff --git a/docs/reference/graph.puml b/docs/reference/graph.puml new file mode 100644 index 00000000..26203e71 --- /dev/null +++ b/docs/reference/graph.puml @@ -0,0 +1,2402 @@ +@startuml +' Color scheme - eye-friendly colors with darker headers +skinparam { + ClassBackgroundColor #f1f1f1 + ClassHeaderBackgroundColor #f1f1f1 + ClassArrowColor #091E42 + ClassBorderColor #172B4D + + ' Make header text white for better contrast with dark header + ClassFontColor #000000 + + ' Optional: make the header font bold + ClassHeaderFontStyle bold + + PackageBackgroundColor #F4F5F7 + PackageBorderColor #DDDDDD + + NoteBackgroundColor #FFF8DC + NoteBorderColor #DCDCAA +} + +namespace app { + class App << (S,Aquamarine) >> { + - fs *filesystem.FileSystem + - remote *remote.Remote + - valsRuntime vals.Evaluator + - helms map[helmKey]helmexec.Interface + - helmsMutex sync.Mutex + - ctx context.Context + + + OverrideKubeContext string + + OverrideHelmBinary string + + OverrideKustomizeBinary string + + EnableLiveOutput bool + + StripArgsValuesOnExitError bool + + DisableForceUpdate bool + + Logger *zap.SugaredLogger + + Kubeconfig string + + Env string + + Namespace string + + Chart string + + Selectors []string + + Args string + + ValuesFiles []string + + Set map[string]any + + FileOrDir string + + - dag(r *Run) error + - list(run *Run) ([]*HelmRelease, error) + - within(dir string, do func() error) error + - visitStateFiles(fileOrDir string, opts LoadOpts, do func(string, string) error) error + - loadDesiredStateFromYaml(file string, opts ...LoadOpts) (*state.HelmState, error) + - getHelm(st *state.HelmState) helmexec.Interface + - visitStates(fileOrDir string, defOpts LoadOpts, converge func(*state.HelmState) (bool, []error)) error + - visitStatesWithSelectorsAndRemoteSupport(fileOrDir string, converge func(*state.HelmState) (bool, []error), includeTransitiveNeeds bool, opt ...LoadOption) error + - findDesiredStateFiles(specifiedPath string, opts LoadOpts) ([]string, error) + - getSelectedReleases(r *Run, includeTransitiveNeeds bool) ([]state.ReleaseSpec, []state.ReleaseSpec, error) + - apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) + - delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error) + - diff(r *Run, c DiffConfigProvider) (*string, bool, bool, []error) + - lint(r *Run, c LintConfigProvider) (bool, []error, []error) + - status(r *Run, c StatusesConfigProvider) (bool, []error) + - sync(r *Run, c SyncConfigProvider) (bool, []error) + - template(r *Run, c TemplateConfigProvider) (bool, []error) + - withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state.HelmState) []error) (bool, []error) + - test(r *Run, c TestConfigProvider) []error + - writeValues(r *Run, c WriteValuesConfigProvider) (bool, []error) + + + Init(c InitConfigProvider) error + + Deps(c DepsConfigProvider) error + + Repos(c ReposConfigProvider) error + + Diff(c DiffConfigProvider) error + + Template(c TemplateConfigProvider) error + + WriteValues(c WriteValuesConfigProvider) error + + Lint(c LintConfigProvider) error + + Fetch(c FetchConfigProvider) error + + Sync(c SyncConfigProvider) error + + Apply(c ApplyConfigProvider) error + + Status(c StatusesConfigProvider) error + + Destroy(c DestroyConfigProvider) error + + Test(c TestConfigProvider) error + + PrintDAGState(c DAGConfigProvider) error + + PrintState(c StateConfigProvider) error + + ListReleases(c ListConfigProvider) error + + ForEachState(do func(*Run) (bool, []error), includeTransitiveNeeds bool, o ...LoadOption) error + + Wrap(converge func(*state.HelmState, helmexec.Interface) []error) func(*state.HelmState, helmexec.Interface, bool) (bool, []error) + + WrapWithoutSelector(converge func(*state.HelmState, helmexec.Interface) []error) func(*state.HelmState, helmexec.Interface) (bool, []error) + + ShowCacheDir(c CacheConfigProvider) error + + CleanCacheDir(c CacheConfigProvider) error + + } + interface ApplyConfigProvider { + + Args() string + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + Cascade() string + + HideNotes() bool + + TakeOwnership() bool + + SuppressOutputLineRegex() []string + + Values() []string + + Set() []string + + SkipCRDs() bool + + SkipDeps() bool + + SkipRefresh() bool + + Wait() bool + + WaitRetries() int + + WaitForJobs() bool + + IncludeTests() bool + + Suppress() []string + + SuppressSecrets() bool + + ShowSecrets() bool + + NoHooks() bool + + SuppressDiff() bool + + DetailedExitcode() bool + + StripTrailingCR() bool + + Color() bool + + NoColor() bool + + Context() int + + DiffOutput() string + + Validate() bool + + SkipCleanup() bool + + SkipDiffOnInstall() bool + + DiffArgs() string + + SyncArgs() string + + SyncReleaseLabels() bool + + } + interface ConfigProvider { + + Args() string + + HelmBinary() string + + KustomizeBinary() string + + EnableLiveOutput() bool + + StripArgsValuesOnExitError() bool + + DisableForceUpdate() bool + + SkipDeps() bool + + SkipRefresh() bool + + FileOrDir() string + + KubeContext() string + + Namespace() string + + Chart() string + + Selectors() []string + + StateValuesSet() map[string]any + + StateValuesFiles() []string + + Kubeconfig() string + + Env() string + + } + class Context << (S,Aquamarine) >> { + - updatedRepos map[string]bool + + + SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) error + + } + interface DAGConfig { + + SkipNeeds() bool + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + } + interface DepsConfigProvider { + + Args() string + + SkipRepos() bool + + IncludeTransitiveNeeds() bool + + } + interface DestroyConfigProvider { + + Args() string + + Cascade() string + + SkipDeps() bool + + SkipRefresh() bool + + SkipCharts() bool + + DeleteWait() bool + + DeleteTimeout() int + + } + interface DiffConfigProvider { + + Args() string + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + SuppressOutputLineRegex() []string + + Values() []string + + Set() []string + + Validate() bool + + SkipCRDs() bool + + SkipDeps() bool + + SkipRefresh() bool + + IncludeTests() bool + + Suppress() []string + + SuppressSecrets() bool + + ShowSecrets() bool + + NoHooks() bool + + SuppressDiff() bool + + SkipDiffOnInstall() bool + + DiffArgs() string + + DetailedExitcode() bool + + StripTrailingCR() bool + + Color() bool + + NoColor() bool + + Context() int + + DiffOutput() string + + } + class Error << (S,Aquamarine) >> { + - msg string + - code *int + + + Errors []error + + + Error() string + + Code() int + + } + interface FetchConfigProvider { + + SkipDeps() bool + + SkipRefresh() bool + + OutputDir() string + + OutputDirTemplate() string + + } + class HelmRelease << (S,Aquamarine) >> { + + Name string + + Namespace string + + Enabled bool + + Installed bool + + Labels string + + Chart string + + Version string + + } + class HelmfileInit << (S,Aquamarine) >> { + - helmBinary string + - configProvider InitConfigProvider + - logger *zap.SugaredLogger + - runner helmexec.Runner + + - installHelmOnWindows() error + + + UpdateHelm() error + + InstallHelm() error + + WhetherContinue(ask string) error + + CheckHelmPlugins() error + + CheckHelm() error + + Initialize() error + + } + interface InitConfigProvider { + + Force() bool + + } + interface LintConfigProvider { + + Args() string + + Values() []string + + Set() []string + + SkipDeps() bool + + SkipRefresh() bool + + SkipCleanup() bool + + } + interface ListConfigProvider { + + Output() string + + SkipCharts() bool + + } + class LoadOpts << (S,Aquamarine) >> { + + Selectors []string + + Environment state.SubhelmfileEnvironmentSpec + + RetainValuesFiles bool + + CalleePath string + + Reverse bool + + Filter bool + + + DeepCopy() LoadOpts + + } + class MultiError << (S,Aquamarine) >> { + + Errors []error + + + Error() string + + } + class NoMatchingHelmfileError << (S,Aquamarine) >> { + - selectors []string + - env string + + + Error() string + + } + class Opts << (S,Aquamarine) >> { + + DAGEnabled bool + + } + class RenderOpts << (S,Aquamarine) >> { + } + interface ReposConfigProvider { + + Args() string + + IncludeTransitiveNeeds() bool + + } + class Run << (S,Aquamarine) >> { + - state *state.HelmState + - helm helmexec.Interface + - ctx Context + + + ReleaseToChart map[state.PrepareChartKey]string + + Ask func(string) bool + + - askForConfirmation(msg string) bool + - prepareChartsIfNeeded(helmfileCommand string, dir string, concurrency int, opts state.ChartPrepareOptions) (map[state.PrepareChartKey]string, error) + - withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func() ) error + - diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts) (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error) + + + Deps(c DepsConfigProvider) []error + + Repos(c ReposConfigProvider) error + + } + interface StateConfigProvider { + + EmbedValues() bool + + } + interface StatusesConfigProvider { + + Args() string + + } + interface SyncConfigProvider { + + Args() string + + PostRenderer() string + + SkipSchemaValidation() bool + + PostRendererArgs() []string + + HideNotes() bool + + TakeOwnership() bool + + Cascade() string + + Values() []string + + Set() []string + + SkipCRDs() bool + + SkipDeps() bool + + SkipRefresh() bool + + Wait() bool + + WaitRetries() int + + WaitForJobs() bool + + SyncArgs() string + + Validate() bool + + SkipNeeds() bool + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + SyncReleaseLabels() bool + + } + interface TemplateConfigProvider { + + Args() string + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + Values() []string + + Set() []string + + OutputDirTemplate() string + + Validate() bool + + SkipDeps() bool + + SkipRefresh() bool + + SkipCleanup() bool + + SkipTests() bool + + OutputDir() string + + IncludeCRDs() bool + + NoHooks() bool + + KubeVersion() string + + ShowOnly() []string + + } + interface TestConfigProvider { + + Args() string + + SkipDeps() bool + + SkipRefresh() bool + + Timeout() int + + Cleanup() bool + + Logs() bool + + } + interface WriteValuesConfigProvider { + + Values() []string + + Set() []string + + OutputFileTemplate() string + + SkipDeps() bool + + SkipRefresh() bool + + SkipCleanup() bool + + IncludeTransitiveNeeds() bool + + } + class app.CacheConfigProvider << (T, #FF7700) >> { + } + class app.DAGConfigProvider << (T, #FF7700) >> { + } + class app.LoadOption << (T, #FF7700) >> { + } + interface concurrencyConfig { + + Concurrency() int + + } + class context << (S,Aquamarine) >> { + - app *App + - st *state.HelmState + - retainValues bool + + - clean(errs []error) error + - wrapErrs(errs ...error) error + + } + class desiredStateLoader << (S,Aquamarine) >> { + - overrideKubeContext string + - overrideHelmBinary string + - overrideKustomizeBinary string + - enableLiveOutput bool + - env string + - namespace string + - chart string + - fs *filesystem.FileSystem + - getHelm func(*state.HelmState) helmexec.Interface + - remote *remote.Remote + - logger *zap.SugaredLogger + - valsRuntime vals.Evaluator + - lockFilePath string + + - loadFile(inheritedEnv *environment.Environment, overrodeEnv *environment.Environment, baseDir string, file string, evaluateBases bool) (*state.HelmState, error) + - loadFileWithOverrides(inheritedEnv *environment.Environment, overrodeEnv *environment.Environment, baseDir string, file string, evaluateBases bool) (*state.HelmState, error) + - underlying() *state.StateCreator + - rawLoad(yaml []byte, baseDir string, file string, evaluateBases bool, env *environment.Environment, overrodeEnv *environment.Environment) (*state.HelmState, error) + - load(env *environment.Environment, overrodeEnv *environment.Environment, baseDir string, filename string, content []byte, evaluateBases bool) (*state.HelmState, error) + - renderTemplatesToYaml(baseDir string, filename string, content []byte) (*bytes.Buffer, error) + - renderTemplatesToYamlWithEnv(baseDir string, filename string, content []byte, inherited *environment.Environment, overrode *environment.Environment) (*bytes.Buffer, error) + - twoPassRenderTemplateToYaml(inherited *environment.Environment, overrode *environment.Environment, baseDir string, filename string, content []byte) (*bytes.Buffer, error) + + + Load(f string, opts LoadOpts) (*state.HelmState, error) + + } + class helmKey << (S,Aquamarine) >> { + + Binary string + + Context string + + } + class helmRecommendedPlugin << (S,Aquamarine) >> { + - name string + - version string + - repo string + + } + interface interactive { + + Interactive() bool + + } + interface loggingConfig { + + Logger() *zap.SugaredLogger + + } + interface valuesControlMode { + + ReuseValues() bool + + ResetValues() bool + + } +} +"app.DAGConfig" *-- "app.ApplyConfigProvider" +"app.concurrencyConfig" *-- "app.ApplyConfigProvider" +"app.interactive" *-- "app.ApplyConfigProvider" +"app.loggingConfig" *-- "app.ApplyConfigProvider" +"app.valuesControlMode" *-- "app.ApplyConfigProvider" +"app.loggingConfig" *-- "app.ConfigProvider" +"app.concurrencyConfig" *-- "app.DepsConfigProvider" +"app.concurrencyConfig" *-- "app.DestroyConfigProvider" +"app.interactive" *-- "app.DestroyConfigProvider" +"app.loggingConfig" *-- "app.DestroyConfigProvider" +"app.DAGConfig" *-- "app.DiffConfigProvider" +"app.concurrencyConfig" *-- "app.DiffConfigProvider" +"app.valuesControlMode" *-- "app.DiffConfigProvider" +"app.concurrencyConfig" *-- "app.FetchConfigProvider" +"app.DAGConfig" *-- "app.LintConfigProvider" +"app.concurrencyConfig" *-- "app.LintConfigProvider" +"app.concurrencyConfig" *-- "app.StatusesConfigProvider" +"app.DAGConfig" *-- "app.SyncConfigProvider" +"app.concurrencyConfig" *-- "app.SyncConfigProvider" +"app.interactive" *-- "app.SyncConfigProvider" +"app.loggingConfig" *-- "app.SyncConfigProvider" +"app.valuesControlMode" *-- "app.SyncConfigProvider" +"app.DAGConfig" *-- "app.TemplateConfigProvider" +"app.concurrencyConfig" *-- "app.TemplateConfigProvider" +"app.concurrencyConfig" *-- "app.TestConfigProvider" +"app.concurrencyConfig" *-- "app.WriteValuesConfigProvider" + + +namespace argparser { + class argMap << (S,Aquamarine) >> { + - m map[string][]*keyVal + - flags []string + + + SetArg(flag string, arg string, isSpace bool) + + } + class keyVal << (S,Aquamarine) >> { + - key string + - val string + - spaceFlag bool + + } +} + + +namespace config { + class ApplyImpl << (S,Aquamarine) >> { + + Set() []string + + Concurrency() int + + Context() int + + DetailedExitcode() bool + + StripTrailingCR() bool + + DiffOutput() string + + IncludeNeeds() bool + + IncludeTests() bool + + IncludeTransitiveNeeds() bool + + ShowSecrets() bool + + NoHooks() bool + + SkipCRDs() bool + + SkipCleanup() bool + + SkipDiffOnInstall() bool + + DiffArgs() string + + SkipNeeds() bool + + Suppress() []string + + SuppressDiff() bool + + SuppressSecrets() bool + + Validate() bool + + Values() []string + + Wait() bool + + WaitRetries() int + + WaitForJobs() bool + + ReuseValues() bool + + ResetValues() bool + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + Cascade() string + + SuppressOutputLineRegex() []string + + SyncArgs() string + + HideNotes() bool + + TakeOwnership() bool + + SyncReleaseLabels() bool + + } + class ApplyOptions << (S,Aquamarine) >> { + + Set []string + + Values []string + + Concurrency int + + Validate bool + + Context int + + Output string + + DetailedExitcode bool + + StripTrailingCR bool + + SkipCleanup bool + + SkipCRDs bool + + SkipNeeds bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + SkipDiffOnInstall bool + + DiffArgs string + + IncludeTests bool + + Suppress []string + + SuppressSecrets bool + + ShowSecrets bool + + NoHooks bool + + SuppressDiff bool + + Wait bool + + WaitRetries int + + WaitForJobs bool + + SkipSchemaValidation bool + + ReuseValues bool + + ResetValues bool + + PostRenderer string + + PostRendererArgs []string + + Cascade string + + SuppressOutputLineRegex []string + + SyncArgs string + + HideNotes bool + + TakeOwnership bool + + SyncReleaseLabels bool + + } + class BuildImpl << (S,Aquamarine) >> { + + EmbedValues() bool + + } + class BuildOptions << (S,Aquamarine) >> { + + EmbedValues bool + + } + class CacheImpl << (S,Aquamarine) >> { + } + class CacheOptions << (S,Aquamarine) >> { + } + class DepsImpl << (S,Aquamarine) >> { + + SkipRepos() bool + + IncludeTransitiveNeeds() bool + + Concurrency() int + + } + class DepsOptions << (S,Aquamarine) >> { + + SkipRepos bool + + Concurrency int + + } + class DestroyImpl << (S,Aquamarine) >> { + + Concurrency() int + + SkipCharts() bool + + Cascade() string + + DeleteWait() bool + + DeleteTimeout() int + + } + class DestroyOptions << (S,Aquamarine) >> { + + Concurrency int + + SkipCharts bool + + Cascade string + + DeleteWait bool + + DeleteTimeout int + + } + class DiffImpl << (S,Aquamarine) >> { + + Concurrency() int + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + Set() []string + + SkipNeeds() bool + + Validate() bool + + Values() []string + + Context() int + + DetailedExitcode() bool + + StripTrailingCR() bool + + DiffOutput() string + + IncludeTests() bool + + ShowSecrets() bool + + NoHooks() bool + + SkipCRDs() bool + + SkipDiffOnInstall() bool + + DiffArgs() string + + Suppress() []string + + SuppressDiff() bool + + SuppressSecrets() bool + + ReuseValues() bool + + ResetValues() bool + + PostRenderer() string + + PostRendererArgs() []string + + SuppressOutputLineRegex() []string + + SkipSchemaValidation() bool + + } + class DiffOptions << (S,Aquamarine) >> { + + Set []string + + Values []string + + DetailedExitcode bool + + StripTrailingCR bool + + IncludeTests bool + + SkipNeeds bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + SkipDiffOnInstall bool + + ShowSecrets bool + + NoHooks bool + + Suppress []string + + SuppressSecrets bool + + Concurrency int + + Validate bool + + Context int + + Output string + + ReuseValues bool + + ResetValues bool + + PostRenderer string + + PostRendererArgs []string + + DiffArgs string + + SuppressOutputLineRegex []string + + SkipSchemaValidation bool + + } + class FetchImpl << (S,Aquamarine) >> { + + Concurrency() int + + OutputDir() string + + OutputDirTemplate() string + + } + class FetchOptions << (S,Aquamarine) >> { + + Concurrency int + + OutputDir string + + OutputDirTemplate string + + } + class GlobalImpl << (S,Aquamarine) >> { + - set map[string]any + + + SetSet(set map[string]any) + + HelmBinary() string + + KustomizeBinary() string + + Kubeconfig() string + + KubeContext() string + + Namespace() string + + Chart() string + + FileOrDir() string + + Selectors() []string + + StateValuesSet() map[string]any + + RawStateValuesSet() []string + + RawStateValuesSetString() []string + + StateValuesFiles() []string + + EnableLiveOutput() bool + + SkipDeps() bool + + SkipRefresh() bool + + StripArgsValuesOnExitError() bool + + DisableForceUpdate() bool + + Logger() *zap.SugaredLogger + + Color() bool + + NoColor() bool + + Env() string + + ValidateConfig() error + + Interactive() bool + + Args() string + + } + class GlobalOptions << (S,Aquamarine) >> { + - logger *zap.SugaredLogger + + + HelmBinary string + + KustomizeBinary string + + File string + + Environment string + + StateValuesSet []string + + StateValuesSetString []string + + StateValuesFile []string + + SkipDeps bool + + SkipRefresh bool + + StripArgsValuesOnExitError bool + + DisableForceUpdate bool + + Quiet bool + + Kubeconfig string + + KubeContext string + + Debug bool + + Color bool + + NoColor bool + + LogLevel string + + Namespace string + + Chart string + + Selector []string + + AllowNoMatchingRelease bool + + EnableLiveOutput bool + + Interactive bool + + Args string + + LogOutput io.Writer + + + Logger() *zap.SugaredLogger + + SetLogger(logger *zap.SugaredLogger) + + } + class InitImpl << (S,Aquamarine) >> { + + Force() bool + + } + class InitOptions << (S,Aquamarine) >> { + + Force bool + + } + class LintImpl << (S,Aquamarine) >> { + + Concurrency() int + + Set() []string + + Values() []string + + SkipCleanup() bool + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + SkipNeeds() bool + + } + class LintOptions << (S,Aquamarine) >> { + + Concurrency int + + Set []string + + Values []string + + SkipNeeds bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + } + class ListImpl << (S,Aquamarine) >> { + + Output() string + + SkipCharts() bool + + } + class ListOptions << (S,Aquamarine) >> { + + Output string + + KeepTempDir bool + + SkipCharts bool + + } + class ReposImpl << (S,Aquamarine) >> { + + IncludeTransitiveNeeds() bool + + } + class ReposOptions << (S,Aquamarine) >> { + } + class ShowDAGImpl << (S,Aquamarine) >> { + } + class ShowDAGOptions << (S,Aquamarine) >> { + } + class StatusImpl << (S,Aquamarine) >> { + + IncludeTransitiveNeeds() bool + + Concurrency() int + + } + class StatusOptions << (S,Aquamarine) >> { + + Concurrency int + + } + class SyncImpl << (S,Aquamarine) >> { + + Concurrency() int + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + Set() []string + + SkipNeeds() bool + + Validate() bool + + Values() []string + + SkipCRDs() bool + + Wait() bool + + WaitRetries() int + + WaitForJobs() bool + + ReuseValues() bool + + ResetValues() bool + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + Cascade() string + + SyncArgs() string + + HideNotes() bool + + TakeOwnership() bool + + SyncReleaseLabels() bool + + } + class SyncOptions << (S,Aquamarine) >> { + + Set []string + + Values []string + + Concurrency int + + Validate bool + + SkipNeeds bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + SkipCRDs bool + + Wait bool + + WaitRetries int + + WaitForJobs bool + + ReuseValues bool + + ResetValues bool + + PostRenderer string + + PostRendererArgs []string + + SkipSchemaValidation bool + + Cascade string + + SyncArgs string + + HideNotes bool + + TakeOwnership bool + + SyncReleaseLabels bool + + } + class TemplateImpl << (S,Aquamarine) >> { + + Concurrency() int + + IncludeCRDs() bool + + NoHooks() bool + + IncludeNeeds() bool + + IncludeTransitiveNeeds() bool + + OutputDir() string + + OutputDirTemplate() string + + Set() []string + + SkipCleanup() bool + + SkipNeeds() bool + + SkipTests() bool + + Validate() bool + + Values() []string + + PostRenderer() string + + PostRendererArgs() []string + + SkipSchemaValidation() bool + + KubeVersion() string + + ShowOnly() []string + + } + class TemplateOptions << (S,Aquamarine) >> { + + Set []string + + Values []string + + OutputDir string + + OutputDirTemplate string + + Concurrency int + + Validate bool + + IncludeCRDs bool + + SkipTests bool + + SkipNeeds bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + NoHooks bool + + SkipCleanup bool + + PostRenderer string + + PostRendererArgs []string + + SkipSchemaValidation bool + + KubeVersion string + + ShowOnly []string + + } + class TestImpl << (S,Aquamarine) >> { + + Cmd *cobra.Command + + + Concurrency() int + + Cleanup() bool + + Logs() bool + + Timeout() int + + } + class TestOptions << (S,Aquamarine) >> { + + Concurrency int + + Cleanup bool + + Logs bool + + Timeout int + + } + class WriteValuesImpl << (S,Aquamarine) >> { + + Concurrency() int + + Set() []string + + Values() []string + + SkipCleanup() bool + + IncludeTransitiveNeeds() bool + + OutputFileTemplate() string + + } + class WriteValuesOptions << (S,Aquamarine) >> { + + Concurrency int + + Set []string + + Values []string + + OutputFileTemplate string + + } +} +"config.ApplyOptions" *-- "config.ApplyImpl" +"config.GlobalImpl" *-- "config.ApplyImpl" +"config.BuildOptions" *-- "config.BuildImpl" +"config.GlobalImpl" *-- "config.BuildImpl" +"config.CacheOptions" *-- "config.CacheImpl" +"config.GlobalImpl" *-- "config.CacheImpl" +"config.DepsOptions" *-- "config.DepsImpl" +"config.GlobalImpl" *-- "config.DepsImpl" +"config.DestroyOptions" *-- "config.DestroyImpl" +"config.GlobalImpl" *-- "config.DestroyImpl" +"config.DiffOptions" *-- "config.DiffImpl" +"config.GlobalImpl" *-- "config.DiffImpl" +"config.FetchOptions" *-- "config.FetchImpl" +"config.GlobalImpl" *-- "config.FetchImpl" +"config.GlobalOptions" *-- "config.GlobalImpl" +"config.GlobalImpl" *-- "config.InitImpl" +"config.InitOptions" *-- "config.InitImpl" +"config.GlobalImpl" *-- "config.LintImpl" +"config.LintOptions" *-- "config.LintImpl" +"config.GlobalImpl" *-- "config.ListImpl" +"config.ListOptions" *-- "config.ListImpl" +"config.GlobalImpl" *-- "config.ReposImpl" +"config.ReposOptions" *-- "config.ReposImpl" +"config.GlobalImpl" *-- "config.ShowDAGImpl" +"config.ShowDAGOptions" *-- "config.ShowDAGImpl" +"config.GlobalImpl" *-- "config.StatusImpl" +"config.StatusOptions" *-- "config.StatusImpl" +"config.GlobalImpl" *-- "config.SyncImpl" +"config.SyncOptions" *-- "config.SyncImpl" +"config.GlobalImpl" *-- "config.TemplateImpl" +"config.TemplateOptions" *-- "config.TemplateImpl" +"config.GlobalImpl" *-- "config.TestImpl" +"config.TestOptions" *-- "config.TestImpl" +"config.GlobalImpl" *-- "config.WriteValuesImpl" +"config.WriteValuesOptions" *-- "config.WriteValuesImpl" + +"app.DAGConfig" <|-- "config.ApplyImpl" +"app.concurrencyConfig" <|-- "config.ApplyImpl" +"app.valuesControlMode" <|-- "config.ApplyImpl" +"app.StateConfigProvider" <|-- "config.BuildImpl" +"app.concurrencyConfig" <|-- "config.DepsImpl" +"app.concurrencyConfig" <|-- "config.DestroyImpl" +"app.DAGConfig" <|-- "config.DiffImpl" +"app.concurrencyConfig" <|-- "config.DiffImpl" +"app.valuesControlMode" <|-- "config.DiffImpl" +"app.concurrencyConfig" <|-- "config.FetchImpl" +"app.StatusesConfigProvider" <|-- "config.GlobalImpl" +"app.interactive" <|-- "config.GlobalImpl" +"app.loggingConfig" <|-- "config.GlobalImpl" +"app.loggingConfig" <|-- "config.GlobalOptions" +"app.InitConfigProvider" <|-- "config.InitImpl" +"app.DAGConfig" <|-- "config.LintImpl" +"app.concurrencyConfig" <|-- "config.LintImpl" +"app.ListConfigProvider" <|-- "config.ListImpl" +"app.concurrencyConfig" <|-- "config.StatusImpl" +"app.DAGConfig" <|-- "config.SyncImpl" +"app.concurrencyConfig" <|-- "config.SyncImpl" +"app.valuesControlMode" <|-- "config.SyncImpl" +"app.DAGConfig" <|-- "config.TemplateImpl" +"app.concurrencyConfig" <|-- "config.TemplateImpl" +"app.concurrencyConfig" <|-- "config.TestImpl" +"app.concurrencyConfig" <|-- "config.WriteValuesImpl" + +namespace environment { + class Environment << (S,Aquamarine) >> { + + Name string + + KubeContext string + + Values map[string]any + + Defaults map[string]any + + + DeepCopy() Environment + + Merge(other *Environment) (*Environment, error) + + GetMergedValues() (map[string]any, error) + + } +} + + +namespace errors { + interface ErrorFormatter { + + Format(s fmt.State, verb rune) + + } + interface ExitCoder { + + ExitCode() int + + } + class ExitError << (S,Aquamarine) >> { + - exitCode int + - message any + + + Error() string + + ExitCode() int + + } +} +"__builtin__.error" *-- "errors.ExitCoder" + +"errors.ExitCoder" <|-- "errors.ExitError" + +namespace event { + class Bus << (S,Aquamarine) >> { + + Runner helmexec.Runner + + Hooks []Hook + + BasePath string + + StateFilePath string + + Namespace string + + Chart string + + Env environment.Environment + + Fs *filesystem.FileSystem + + Logger *zap.SugaredLogger + + + Trigger(evt string, evtErr error, context map[string]any) (bool, error) + + } + class Hook << (S,Aquamarine) >> { + + Name string + + Events []string + + Command string + + Kubectl map[string]string + + Args []string + + ShowLogs bool + + } + class event << (S,Aquamarine) >> { + + Name string + + Error error + + } +} + + +namespace exectest { + class Affected << (S,Aquamarine) >> { + + Upgraded []*Release + + Deleted []*Release + + Failed []*Release + + } + class DiffKey << (S,Aquamarine) >> { + + Name string + + Chart string + + Flags string + + } + class Helm << (S,Aquamarine) >> { + + Charts []string + + Repo []string + + Releases []Release + + Deleted []Release + + Linted []Release + + Templated []Release + + Lists map[ListKey]string + + Diffs map[DiffKey]error + + Diffed []Release + + FailOnUnexpectedDiff bool + + FailOnUnexpectedList bool + + Version *semver.Version + + UpdateDepsCallbacks map[string]func(string) error + + DiffMutex *sync.Mutex + + ChartsMutex *sync.Mutex + + ReleasesMutex *sync.Mutex + + Helm3 bool + + - sync(m *sync.Mutex, f func() ) + + + UpdateDeps(chart string) error + + BuildDeps(name string, chart string, flags ...string) error + + SetExtraArgs(args ...string) + + SetHelmBinary(bin string) + + SetEnableLiveOutput(enableLiveOutput bool) + + SetDisableForceUpdate(forceUpdate bool) + + SkipSchemaValidation(skipSchemaValidation bool) + + AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) error + + UpdateRepo() error + + RegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) error + + SyncRelease(context helmexec.HelmContext, name string, chart string, namespace string, flags ...string) error + + DiffRelease(context helmexec.HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) error + + ReleaseStatus(context helmexec.HelmContext, release string, flags ...string) error + + DeleteRelease(context helmexec.HelmContext, name string, flags ...string) error + + List(context helmexec.HelmContext, filter string, flags ...string) (string, error) + + DecryptSecret(context helmexec.HelmContext, name string, flags ...string) (string, error) + + TestRelease(context helmexec.HelmContext, name string, flags ...string) error + + Fetch(chart string, flags ...string) error + + Lint(name string, chart string, flags ...string) error + + TemplateRelease(name string, chart string, flags ...string) error + + ChartPull(chart string, path string, flags ...string) error + + ChartExport(chart string, path string) error + + IsHelm3() bool + + GetVersion() helmexec.Version + + IsVersionAtLeast(versionStr string) bool + + ShowChart(chartPath string) (chart.Metadata, error) + + } + class ListKey << (S,Aquamarine) >> { + + Filter string + + Flags string + + + String() string + + } + class Release << (S,Aquamarine) >> { + + Name string + + Flags []string + + } +} + +"helmexec.DependencyUpdater" <|-- "exectest.Helm" +"helmexec.Interface" <|-- "exectest.Helm" +"state.RepoUpdater" <|-- "exectest.Helm" + +namespace filesystem { + class FileSystem << (S,Aquamarine) >> { + + ReadFile func(string) ([]byte, error) + + ReadDir func(string) ([]fs.DirEntry, error) + + DeleteFile func(string) error + + FileExists func(string) (bool, error) + + Glob func(string) ([]string, error) + + FileExistsAt func(string) bool + + DirectoryExistsAt func(string) bool + + Dir func(string) string + + Stat func(string) (os.FileInfo, error) + + Getwd func() (string, error) + + Chdir func(string) error + + Abs func(string) (string, error) + + EvalSymlinks func(string) (string, error) + + - stat(name string) (os.FileInfo, error) + - readFile(name string) ([]byte, error) + - fileExistsAtDefault(path string) bool + - fileExistsDefault(path string) (bool, error) + - directoryExistsDefault(path string) bool + - resolveSymlinks(path string) (string, error) + - absDefault(path string) (string, error) + + } + class fileStat << (S,Aquamarine) >> { + - name string + - size int64 + - mode fs.FileMode + - modTime time.Time + + + Name() string + + Size() int64 + + Mode() fs.FileMode + + ModTime() time.Time + + IsDir() bool + + Sys() any + + } +} + + +namespace hcllang { + class HCLLoader << (S,Aquamarine) >> { + - hclFilesPath []string + - fs *filesystem.FileSystem + - logger *zap.SugaredLogger + + - createDAGGraph(HelmfileHCLValues map[string]*HelmfileHCLValue, blockType string) (*dag.Topology, error) + - decodeGraph(dagTopology *dag.Topology, blocktype string, vars map[string]*HelmfileHCLValue, additionalLocalContext map[string]map[string]cty.Value) (map[string]cty.Value, error) + - readHCLs() (map[string]*HelmfileHCLValue, map[string]map[string]*HelmfileHCLValue, hcl.Diagnostics) + - readHCL(hvars map[string]*HelmfileHCLValue, file string) (map[string]*HelmfileHCLValue, map[string]*HelmfileHCLValue, hcl.Diagnostics) + - decodeHelmfileHCLValuesBlock(block *hcl.Block) (map[string]*HelmfileHCLValue, hcl.Diagnostics) + - parseSingleAttrRef(traversal hcl.Traversal, blockType string) (string, hcl.Diagnostics) + - convertToGo(src map[string]cty.Value) (map[string]any, error) + + + AddFile(file string) + + AddFiles(files []string) + + Length() int + + HCLRender() (map[string]any, error) + + } + class HelmfileHCLValue << (S,Aquamarine) >> { + + Name string + + Expr hcl.Expression + + Range hcl.Range + + } +} + + +namespace helmexec { + interface DependencyUpdater { + + UpdateDeps(chart string) error + + IsHelm3() bool + + } + class ExitError << (S,Aquamarine) >> { + + Message string + + Code int + + + Error() string + + ExitStatus() int + + } + class HelmContext << (S,Aquamarine) >> { + + HistoryMax int + + WorkerIndex int + + Writer io.Writer + + } + class HelmExecOptions << (S,Aquamarine) >> { + + EnableLiveOutput bool + + DisableForceUpdate bool + + } + interface Interface { + + SetExtraArgs(args ...string) + + SetHelmBinary(bin string) + + SetEnableLiveOutput(enableLiveOutput bool) + + SetDisableForceUpdate(forceUpdate bool) + + AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) error + + UpdateRepo() error + + RegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) error + + BuildDeps(name string, chart string, flags ...string) error + + UpdateDeps(chart string) error + + SyncRelease(context HelmContext, name string, chart string, namespace string, flags ...string) error + + DiffRelease(context HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) error + + TemplateRelease(name string, chart string, flags ...string) error + + Fetch(chart string, flags ...string) error + + ChartPull(chart string, path string, flags ...string) error + + ChartExport(chart string, path string) error + + Lint(name string, chart string, flags ...string) error + + ReleaseStatus(context HelmContext, name string, flags ...string) error + + DeleteRelease(context HelmContext, name string, flags ...string) error + + TestRelease(context HelmContext, name string, flags ...string) error + + List(context HelmContext, filter string, flags ...string) (string, error) + + DecryptSecret(context HelmContext, name string, flags ...string) (string, error) + + IsHelm3() bool + + GetVersion() Version + + IsVersionAtLeast(versionStr string) bool + + ShowChart(chart string) (chart.Metadata, error) + + } + interface Runner { + + Execute(cmd string, args []string, env map[string]string, enableLiveOutput bool) ([]byte, error) + + ExecuteStdIn(cmd string, args []string, env map[string]string, stdin io.Reader) ([]byte, error) + + } + class ShellRunner << (S,Aquamarine) >> { + + Dir string + + StripArgsValuesOnExitError bool + + Logger *zap.SugaredLogger + + Ctx context.Context + + + Execute(cmd string, args []string, env map[string]string, enableLiveOutput bool) ([]byte, error) + + ExecuteStdIn(cmd string, args []string, env map[string]string, stdin io.Reader) ([]byte, error) + + } + class Version << (S,Aquamarine) >> { + + Major int + + Minor int + + Patch int + + } + class decryptedSecret << (S,Aquamarine) >> { + - mutex sync.RWMutex + - bytes []byte + - err error + + } + class execer << (S,Aquamarine) >> { + - helmBinary string + - options HelmExecOptions + - version *semver.Version + - runner Runner + - logger *zap.SugaredLogger + - kubeconfig string + - kubeContext string + - extra []string + - decryptedSecretMutex sync.Mutex + - decryptedSecrets map[string]*decryptedSecret + - writeTempFile func([]byte) (string, error) + + - exec(args []string, env map[string]string, overrideEnableLiveOutput *bool) ([]byte, error) + - execStdIn(args []string, env map[string]string, stdin io.Reader) ([]byte, error) + - azcli(name string) ([]byte, error) + - info(out []byte) + - write(w io.Writer, out []byte) + + + SetExtraArgs(args ...string) + + SetHelmBinary(bin string) + + SetEnableLiveOutput(enableLiveOutput bool) + + SetDisableForceUpdate(forceUpdate bool) + + AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) error + + UpdateRepo() error + + RegistryLogin(repository string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) error + + BuildDeps(name string, chart string, flags ...string) error + + UpdateDeps(chart string) error + + SyncRelease(context HelmContext, name string, chart string, namespace string, flags ...string) error + + ReleaseStatus(context HelmContext, name string, flags ...string) error + + List(context HelmContext, filter string, flags ...string) (string, error) + + DecryptSecret(context HelmContext, name string, flags ...string) (string, error) + + TemplateRelease(name string, chart string, flags ...string) error + + DiffRelease(context HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) error + + Lint(name string, chart string, flags ...string) error + + Fetch(chart string, flags ...string) error + + ChartPull(chart string, path string, flags ...string) error + + ChartExport(chart string, path string) error + + DeleteRelease(context HelmContext, name string, flags ...string) error + + TestRelease(context HelmContext, name string, flags ...string) error + + AddPlugin(name string, path string, version string) error + + UpdatePlugin(name string) error + + IsHelm3() bool + + GetVersion() Version + + IsVersionAtLeast(versionStr string) bool + + ShowChart(chartPath string) (chart.Metadata, error) + + } + class logWriter << (S,Aquamarine) >> { + - log *zap.SugaredLogger + - prefix string + + + Write(p []byte) (int, error) + + } + class logWriterGenerator << (S,Aquamarine) >> { + - log *zap.SugaredLogger + + + Writer(prefix string) *logWriter + + } +} + +"helmexec.Runner" <|-- "helmexec.ShellRunner" +"helmexec.DependencyUpdater" <|-- "helmexec.execer" +"helmexec.Interface" <|-- "helmexec.execer" +"state.RepoUpdater" <|-- "helmexec.execer" + +namespace main { + class main.diffSource << (T, #FF7700) >> { + } + class main.resource << (T, #FF7700) >> { + } + class meta << (S,Aquamarine) >> { + - apiVersion string + - kind string + - name string + - namespace string + + } + class pair << (S,Aquamarine) >> { + - meta meta + - left resource + - right resource + + - add(node resource, source diffSource) error + + } + class pairs << (S,Aquamarine) >> { + - list []*pair + + - isSameResource(meta1 meta, meta2 meta) bool + - add(node resource, source diffSource) error + + } + class resource << (S,Aquamarine) >> { + - getMeta() meta + - getID() string + + } +} + + +namespace maputil { + interface arg { + - getMap( map[string]any) map[string]any + - set( map[string]any, any) + + } + class indexedKeyArg << (S,Aquamarine) >> { + - key string + - index int + + - getArray(m map[string]any) []any + - getMap(m map[string]any) map[string]any + - set(m map[string]any, value any) + + } + class keyArg << (S,Aquamarine) >> { + - key string + + - getMap(m map[string]any) map[string]any + - set(m map[string]any, value any) + + } +} + +"maputil.arg" <|-- "maputil.indexedKeyArg" +"maputil.arg" <|-- "maputil.keyArg" + +namespace policy { + class policy.checkerFunc << (T, #FF7700) >> { + } +} + + +namespace remote { + interface Getter { + + Get(wd string, src string, dst string) error + + } + class GoGetter << (S,Aquamarine) >> { + + Logger *zap.SugaredLogger + + + Get(wd string, src string, dst string) error + + } + class HttpGetter << (S,Aquamarine) >> { + + Logger *zap.SugaredLogger + + + Get(wd string, src string, dst string) error + + } + class InvalidURLError << (S,Aquamarine) >> { + - err string + + + Error() string + + } + class Remote << (S,Aquamarine) >> { + - fs *filesystem.FileSystem + + + Logger *zap.SugaredLogger + + Home string + + Getter Getter + + S3Getter Getter + + HttpGetter Getter + + + Locate(urlOrPath string, cacheDirOpt ...string) (string, error) + + Fetch(path string, cacheDirOpt ...string) (string, error) + + } + class S3Getter << (S,Aquamarine) >> { + + Logger *zap.SugaredLogger + + + Get(wd string, src string, dst string) error + + S3FileExists(path string) (string, error) + + } + class Source << (S,Aquamarine) >> { + + Getter string + + } +} + +"remote.Getter" <|-- "remote.GoGetter" +"remote.Getter" <|-- "remote.HttpGetter" +"remote.Getter" <|-- "remote.S3Getter" + +namespace state { + class AffectedReleases << (S,Aquamarine) >> { + + Upgraded []*ReleaseSpec + + Deleted []*ReleaseSpec + + Failed []*ReleaseSpec + + DeleteFailed []*ReleaseSpec + + + DisplayAffectedReleases(logger *zap.SugaredLogger) + + } + class ChartLockedRequirements << (S,Aquamarine) >> { + + Version string + + ResolvedDependencies []ResolvedChartDependency + + Digest string + + Generated string + + } + class ChartMeta << (S,Aquamarine) >> { + + Name string + + } + class ChartPrepareOptions << (S,Aquamarine) >> { + + ForceDownload bool + + SkipRepos bool + + SkipDeps bool + + SkipRefresh bool + + SkipResolve bool + + SkipCleanup bool + + Validate bool + + IncludeCRDs *bool + + Wait bool + + WaitRetries int + + WaitForJobs bool + + OutputDir string + + OutputDirTemplate string + + IncludeTransitiveNeeds bool + + Concurrency int + + KubeVersion string + + Set []string + + Values []string + + DeleteWait bool + + DeleteTimeout int + + } + class ChartRequirements << (S,Aquamarine) >> { + + UnresolvedDependencies []unresolvedChartDependency + + } + class Chartify << (S,Aquamarine) >> { + + Opts *chartify.ChartifyOpts + + Clean func() + + } + class CyclicReleaseTemplateInheritanceError << (S,Aquamarine) >> { + + Message string + + + Error() string + + } + class Dependency << (S,Aquamarine) >> { + + Chart string + + Version string + + Alias string + + } + interface DiffOpt { + + Apply( *DiffOpts) + + } + class DiffOpts << (S,Aquamarine) >> { + + Context int + + Output string + + Color bool + + NoColor bool + + Set []string + + SkipCleanup bool + + SkipDiffOnInstall bool + + DiffArgs string + + ReuseValues bool + + ResetValues bool + + PostRenderer string + + PostRendererArgs []string + + SuppressOutputLineRegex []string + + SkipSchemaValidation bool + + + Apply(opts *DiffOpts) + + } + class EnvironmentSpec << (S,Aquamarine) >> { + + Values []any + + Secrets []string + + KubeContext string + + MissingFileHandler *string + + MissingFileHandlerConfig MissingFileHandlerConfig + + } + class EnvironmentTemplateData << (S,Aquamarine) >> { + + Environment environment.Environment + + Namespace string + + Values map[string]any + + StateValues *map[string]any + + } + class EnvironmentValuesLoader << (S,Aquamarine) >> { + - storage *Storage + - fs *filesystem.FileSystem + - logger *zap.SugaredLogger + - remote *remote.Remote + + + LoadEnvironmentValues(missingFileHandler *string, valuesEntries []any, ctxEnv *environment.Environment, envName string) (map[string]any, error) + + } + class HelmSpec << (S,Aquamarine) >> { + + KubeContext string + + Args []string + + DiffArgs []string + + SyncArgs []string + + Verify bool + + Keyring string + + EnableDNS bool + + SkipSchemaValidation *bool + + Devel bool + + Wait bool + + WaitRetries int + + WaitForJobs bool + + Timeout int + + RecreatePods bool + + Force bool + + Atomic bool + + CleanupOnFail bool + + HistoryMax *int + + CreateNamespace *bool + + SkipDeps bool + + SkipRefresh bool + + ReuseValues bool + + PostRenderer *string + + PostRendererArgs []string + + Cascade *string + + SuppressOutputLineRegex []string + + DisableValidation *bool + + DisableOpenAPIValidation *bool + + InsecureSkipTLSVerify bool + + PlainHttp bool + + DeleteWait bool + + DeleteTimeout int + + SyncReleaseLabels bool + + } + class HelmState << (S,Aquamarine) >> { + - basePath string + - logger *zap.SugaredLogger + - fs *filesystem.FileSystem + - tempDir func(string, string) (string, error) + - valsRuntime vals.Evaluator + + + FilePath string + + RenderedValues map[string]any + + - mergeLockedDependencies() (*HelmState, error) + - updateDependenciesInTempDir(shell helmexec.DependencyUpdater, tempDir func(string, string) (string, error)) (*HelmState, error) + - loadValuesEntries(missingFileHandler *string, entries []any, remote *remote.Remote, ctxEnv *environment.Environment, envName string) (map[string]any, error) + - appendHelmXFlags(flags []string, release *ReleaseSpec) []string + - appendLabelsFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, syncReleaseLabels bool) []string + - appendPostRenderFlags(flags []string, release *ReleaseSpec, postRenderer string) []string + - appendPostRenderArgsFlags(flags []string, release *ReleaseSpec, postRendererArgs []string) []string + - appendSkipSchemaValidationFlags(flags []string, release *ReleaseSpec, skipSchemaValidation bool) []string + - appendSuppressOutputLineRegexFlags(flags []string, release *ReleaseSpec, suppressOutputLineRegex []string) []string + - appendWaitForJobsFlags(flags []string, release *ReleaseSpec, ops *SyncOpts) []string + - appendWaitFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, ops *SyncOpts) []string + - appendCascadeFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, cascade string) []string + - appendHideNotesFlags(flags []string, helm helmexec.Interface, ops *SyncOpts) []string + - appendTakeOwnershipFlags(flags []string, helm helmexec.Interface, ops *SyncOpts) []string + - appendShowOnlyFlags(flags []string, showOnly []string) []string + - downloadChartWithGoGetter(r *ReleaseSpec) (string, error) + - goGetterChart(chart string, dir string, cacheDir string, force bool) (string, error) + - reformat(spec *ReleaseSpec) []string + - prepareSyncReleases(helm helmexec.Interface, additionalValues []string, concurrency int, opt ...SyncOpt) ([]syncPrepareResult, []error) + - isReleaseInstalled(context helmexec.HelmContext, helm helmexec.Interface, release ReleaseSpec) (bool, error) + - appendDeleteWaitFlags(args []string, release *ReleaseSpec) []string + - listReleases(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) + - getDeployedVersion(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) + - runHelmDepBuilds(helm helmexec.Interface, concurrency int, builds []*chartPrepareResult) error + - commonDiffFlags(detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opt *DiffOpts) []string + - prepareDiffReleases(helm helmexec.Interface, additionalValues []string, concurrency int, detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opts ...DiffOpt) ([]diffPrepareResult, []error) + - createHelmContext(spec *ReleaseSpec, workerIndex int) helmexec.HelmContext + - createHelmContextWithWriter(spec *ReleaseSpec, w io.Writer) helmexec.HelmContext + - triggerGlobalReleaseEvent(evt string, evtErr error, helmfileCmd string) (bool, error) + - triggerPrepareEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) + - triggerPresyncEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) + - triggerPostsyncEvent(r *ReleaseSpec, evtErr error, helmfileCommand string) (bool, error) + - triggerReleaseEvent(evt string, evtErr error, r *ReleaseSpec, helmfileCmd string) (bool, error) + - appendConnectionFlags(flags []string, release *ReleaseSpec) []string + - appendExtraDiffFlags(flags []string, opt *DiffOpts) []string + - appendExtraSyncFlags(flags []string, opt *SyncOpts) []string + - appendVerifyFlags(flags []string, release *ReleaseSpec) []string + - appendKeyringFlags(flags []string, release *ReleaseSpec) []string + - kubeConnectionFlags(release *ReleaseSpec) []string + - appendChartDownloadFlags(flags []string, release *ReleaseSpec) []string + - needsPlainHttp(release *ReleaseSpec, repo *RepositorySpec) bool + - needsInsecureSkipTLSVerify(release *ReleaseSpec, repo *RepositorySpec) bool + - timeoutFlags(release *ReleaseSpec) []string + - flagsForUpgrade(helm helmexec.Interface, release *ReleaseSpec, workerIndex int, opt *SyncOpts) ([]string, []string, error) + - flagsForTemplate(helm helmexec.Interface, release *ReleaseSpec, workerIndex int, opt *TemplateOpts) ([]string, []string, error) + - flagsForDiff(helm helmexec.Interface, release *ReleaseSpec, disableValidation bool, workerIndex int, opt *DiffOpts) ([]string, []string, error) + - appendChartVersionFlags(flags []string, release *ReleaseSpec) []string + - chartOCIFlags(r *ReleaseSpec) []string + - appendValuesControlModeFlag(flags []string, reuseValues bool, resetValues bool) []string + - getApiVersions(r *ReleaseSpec) []string + - getKubeVersion(r *ReleaseSpec, kubeVersion string) string + - appendApiVersionsFlags(flags []string, r *ReleaseSpec, kubeVersion string) []string + - isDevelopment(release *ReleaseSpec) bool + - flagsForLint(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, []string, error) + - newReleaseTemplateData(release *ReleaseSpec) releaseTemplateData + - newReleaseTemplateFuncMap(dir string) template.FuncMap + - storage() *Storage + - removeFiles(files []string) + - generateTemporaryReleaseValuesFiles(release *ReleaseSpec, values []any, missingFileHandler *string) ([]string, error) + - generateVanillaValuesFiles(release *ReleaseSpec) ([]string, error) + - generateSecretValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) + - generateValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) + - namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, []string, error) + - setFlags(setValues []SetValue) ([]string, error) + - setStringFlags(setValues []SetValue) ([]string, error) + - getOCIChart(release *ReleaseSpec, tempDir string, helm helmexec.Interface, outputDirTemplate string) (*string, error) + - getOCIQualifiedChartName(release *ReleaseSpec, helm helmexec.Interface) (string, string, string, error) + - getOCIChartPath(tempDir string, release *ReleaseSpec, chartName string, chartVersion string, outputDirTemplate string) (string, error) + - createReleaseTemplateData(release *ReleaseSpec, vals map[string]any) releaseTemplateData + - releaseWithInheritedTemplate(r *ReleaseSpec, inheritancePath []string) (*ReleaseSpec, error) + - scatterGather(concurrency int, items int, produceInputs func() , receiveInputsAndProduceIntermediates func(int) , aggregateIntermediates func() ) + - scatterGatherReleases(helm helmexec.Interface, concurrency int, do func(ReleaseSpec, int) error) []error + - iterateOnReleases(helm helmexec.Interface, concurrency int, inputs []ReleaseSpec, do func(ReleaseSpec, int) error) []error + + + PrepareChartify(helm helmexec.Interface, release *ReleaseSpec, chart string, workerIndex int) (*Chartify, func() , error) + + UnmarshalYAML(unmarshal func(any) error) error + + ApplyOverrides(spec *ReleaseSpec) + + SyncRepos(helm RepoUpdater, shouldSkip map[string]bool) ([]string, error) + + DetectReleasesToBeDeletedForSync(helm helmexec.Interface, releases []ReleaseSpec) ([]ReleaseSpec, error) + + DetectReleasesToBeDeleted(helm helmexec.Interface, releases []ReleaseSpec) ([]ReleaseSpec, error) + + DeleteReleasesForSync(affectedReleases *AffectedReleases, helm helmexec.Interface, workerLimit int, cascade string) []error + + SyncReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, additionalValues []string, workerLimit int, opt ...SyncOpt) []error + + GetRepositoryAndNameFromChartName(chartName string) (*RepositorySpec, string) + + PrepareCharts(helm helmexec.Interface, dir string, concurrency int, helmfileCommand string, opts ChartPrepareOptions) (map[PrepareChartKey]string, []error) + + TemplateReleases(helm helmexec.Interface, outputDir string, additionalValues []string, args []string, workerLimit int, validate bool, opt ...TemplateOpt) []error + + WriteReleasesValues(helm helmexec.Interface, additionalValues []string, opt ...WriteValuesOpt) []error + + LintReleases(helm helmexec.Interface, additionalValues []string, args []string, workerLimit int, opt ...LintOpt) []error + + DiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, suppressDiff bool, triggerCleanupEvents bool, opt ...DiffOpt) ([]ReleaseSpec, []error) + + ReleaseStatuses(helm helmexec.Interface, workerLimit int) []error + + DeleteReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, concurrency int, purge bool, cascade string) []error + + TestReleases(helm helmexec.Interface, cleanup bool, timeout int, concurrency int, options ...TestOption) []error + + Clean() []error + + GetReleasesWithOverrides() ([]ReleaseSpec, error) + + GetReleasesWithLabels() []ReleaseSpec + + SelectReleases(includeTransitiveNeeds bool) ([]Release, error) + + GetSelectedReleases(includeTransitiveNeeds bool) ([]ReleaseSpec, error) + + FilterReleases(includeTransitiveNeeds bool) error + + TriggerGlobalPrepareEvent(helmfileCommand string) (bool, error) + + TriggerGlobalCleanupEvent(helmfileCommand string) (bool, error) + + TriggerCleanupEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) + + TriggerPreapplyEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) + + ResolveDeps() (*HelmState, error) + + UpdateDeps(helm helmexec.Interface, includeTransitiveNeeds bool) []error + + RenderReleaseValuesFileToBytes(release *ReleaseSpec, path string) ([]byte, error) + + ExpandedHelmfiles() ([]SubHelmfileSpec, error) + + GenerateOutputDir(outputDir string, release *ReleaseSpec, outputDirTemplate string) (string, error) + + GenerateOutputFilePath(release *ReleaseSpec, outputFileTemplate string) (string, error) + + ToYaml() (string, error) + + LoadYAMLForEmbedding(release *ReleaseSpec, entries []any, missingFileHandler *string, pathPrefix string) ([]any, error) + + Reverse() + + IsOCIChart(chart string) bool + + FullFilePath() (string, error) + + Values() map[string]any + + ExecuteTemplates() (*HelmState, error) + + PlanReleases(opts PlanOptions) ([][]Release, error) + + } + class Inherit << (S,Aquamarine) >> { + + Template string + + Except []string + + } + class Inherits << (S,Aquamarine) >> { + + UnmarshalYAML(unmarshal func(any) error) error + + } + class LabelFilter << (S,Aquamarine) >> { + - positiveLabels [][]string + - negativeLabels [][]string + + + Match(r ReleaseSpec) bool + + } + interface LintOpt { + + Apply( *LintOpts) + + } + class LintOpts << (S,Aquamarine) >> { + + Set []string + + SkipCleanup bool + + + Apply(opts *LintOpts) + + } + class MissingFileHandlerConfig << (S,Aquamarine) >> { + + IgnoreMissingGitBranch bool + + - resolveFileOptions() []resolveFileOption + + } + class PlanOptions << (S,Aquamarine) >> { + + Purpose string + + Reverse bool + + IncludeNeeds bool + + IncludeTransitiveNeeds bool + + SkipNeeds bool + + SelectedReleases []ReleaseSpec + + } + class PrepareChartKey << (S,Aquamarine) >> { + + Namespace string + + } + class Release << (S,Aquamarine) >> { + + Filtered bool + + } + class ReleaseError << (S,Aquamarine) >> { + - err error + + + Code int + + + Error() string + + } + interface ReleaseFilter { + + Match(r ReleaseSpec) bool + + } + class ReleaseSetSpec << (S,Aquamarine) >> { + + DefaultHelmBinary string + + DefaultKustomizeBinary string + + DefaultValues []any + + Environments map[string]EnvironmentSpec + + Bases []string + + HelmDefaults HelmSpec + + Helmfiles []SubHelmfileSpec + + OverrideKubeContext string + + OverrideNamespace string + + OverrideChart string + + Repositories []RepositorySpec + + CommonLabels map[string]string + + Releases []ReleaseSpec + + OrginReleases []ReleaseSpec + + Selectors []string + + ApiVersions []string + + KubeVersion string + + Hooks []event.Hook + + Templates map[string]TemplateSpec + + Env environment.Environment + + MissingFileHandler string + + MissingFileHandlerConfig MissingFileHandlerConfig + + LockFile string + + } + class ReleaseSpec << (S,Aquamarine) >> { + - duration time.Duration + - installedVersion string + + + Chart string + + ChartPath string + + Directory string + + Version string + + Verify *bool + + Keyring string + + EnableDNS *bool + + Devel *bool + + Wait *bool + + WaitRetries *int + + WaitForJobs *bool + + Timeout *int + + RecreatePods *bool + + Force *bool + + Installed *bool + + Atomic *bool + + CleanupOnFail *bool + + HistoryMax *int + + Condition string + + CreateNamespace *bool + + DisableOpenAPIValidation *bool + + DisableValidation *bool + + DisableValidationOnInstall *bool + + MissingFileHandler *string + + Needs []string + + Hooks []event.Hook + + Name string + + Namespace string + + Labels map[string]string + + Values []any + + Secrets []any + + SetValues []SetValue + + SetStringValues []SetValue + + ValuesTemplate []any + + SetValuesTemplate []SetValue + + ApiVersions []string + + KubeVersion string + + EnvValues []SetValue + + ValuesPathPrefix string + + KubeContext string + + InsecureSkipTLSVerify bool + + PlainHttp bool + + VerifyTemplate *string + + WaitTemplate *string + + InstalledTemplate *string + + Dependencies []Dependency + + JSONPatches []any + + StrategicMergePatches []any + + Transformers []any + + Adopt []string + + ForceGoGetter bool + + ForceNamespace string + + SkipDeps *bool + + SkipRefresh *bool + + PostRenderer *string + + SkipSchemaValidation *bool + + PostRendererArgs []string + + Cascade *string + + SuppressOutputLineRegex []string + + Inherit Inherits + + SuppressDiff *bool + + DeleteWait *bool + + DeleteTimeout *int + + SyncReleaseLabels bool + + + ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*ReleaseSpec, error) + + Clone() (*ReleaseSpec, error) + + Desired() bool + + ChartPathOrName() string + + } + interface RepoUpdater { + + IsHelm3() bool + + AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) error + + UpdateRepo() error + + RegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) error + + } + class RepositorySpec << (S,Aquamarine) >> { + + Name string + + URL string + + CaFile string + + CertFile string + + KeyFile string + + Username string + + Password string + + RegistryConfig string + + Managed string + + OCI bool + + Verify bool + + Keyring string + + PassCredentials bool + + SkipTLSVerify bool + + PlainHttp bool + + } + class ResolvedChartDependency << (S,Aquamarine) >> { + + ChartName string + + Repository string + + Version string + + } + class ResolvedDependencies << (S,Aquamarine) >> { + - deps map[string][]ResolvedChartDependency + + - add(dep ResolvedChartDependency) error + + + Get(chart string, versionConstraint string) (string, error) + + } + class SetValue << (S,Aquamarine) >> { + + Name string + + Value string + + File string + + Values []string + + } + class StateCreator << (S,Aquamarine) >> { + - logger *zap.SugaredLogger + - fs *filesystem.FileSystem + - valsRuntime vals.Evaluator + - getHelm func(*HelmState) helmexec.Interface + - overrideHelmBinary string + - overrideKustomizeBinary string + - enableLiveOutput bool + - remote *remote.Remote + - lockFile string + + + Strict bool + + LoadFile func(*environment.Environment, *environment.Environment, string, string, bool) (*HelmState, error) + + - loadBases(envValues *environment.Environment, overrodeEnv *environment.Environment, st *HelmState, baseDir string) (*HelmState, error) + - loadEnvValues(st *HelmState, name string, failOnMissingEnv bool, ctxEnv *environment.Environment, overrode *environment.Environment) (*environment.Environment, error) + - scatterGatherEnvSecretFiles(st *HelmState, envSecretFiles []string, envVals map[string]any, keepFileExtensions []string) ([]string, error) + + + Parse(content []byte, baseDir string, file string) (*HelmState, error) + + LoadEnvValues(target *HelmState, env string, failOnMissingEnv bool, ctxEnv *environment.Environment, overrode *environment.Environment) (*HelmState, error) + + ParseAndLoad(content []byte, baseDir string, file string, envName string, failOnMissingEnv bool, evaluateBases bool, envValues *environment.Environment, overrode *environment.Environment) (*HelmState, error) + + } + class StateLoadError << (S,Aquamarine) >> { + + Msg string + + Cause error + + + Error() string + + } + class Storage << (S,Aquamarine) >> { + - logger *zap.SugaredLogger + - basePath string + - fs *filesystem.FileSystem + + + FilePath string + + - resolveFile(missingFileHandler *string, tpe string, path string, opts ...resolveFileOption) ([]string, bool, error) + - normalizePath(path string) string + - normalizeSetFilePath(path string, goos string) string + + + ExpandPaths(globPattern string) ([]string, error) + + JoinBase(relPath string) string + + } + class SubHelmfileSpec << (S,Aquamarine) >> { + + Path string + + Selectors []string + + SelectorsInherited bool + + Environment SubhelmfileEnvironmentSpec + + + MarshalYAML() (any, error) + + UnmarshalYAML(unmarshal func(any) error) error + + } + class SubhelmfileEnvironmentSpec << (S,Aquamarine) >> { + + OverrideValues []any + + } + interface SyncOpt { + + Apply( *SyncOpts) + + } + class SyncOpts << (S,Aquamarine) >> { + + Set []string + + SkipCleanup bool + + SkipCRDs bool + + Wait bool + + WaitRetries int + + WaitForJobs bool + + SyncReleaseLabels bool + + ReuseValues bool + + ResetValues bool + + PostRenderer string + + SkipSchemaValidation bool + + PostRendererArgs []string + + SyncArgs string + + HideNotes bool + + TakeOwnership bool + + + Apply(opts *SyncOpts) + + } + interface TemplateOpt { + + Apply( *TemplateOpts) + + } + class TemplateOpts << (S,Aquamarine) >> { + + Set []string + + SkipCleanup bool + + OutputDirTemplate string + + IncludeCRDs bool + + NoHooks bool + + SkipTests bool + + PostRenderer string + + PostRendererArgs []string + + KubeVersion string + + ShowOnly []string + + SkipSchemaValidation bool + + + Apply(opts *TemplateOpts) + + } + class TemplateSpec << (S,Aquamarine) >> { + } + class TestOpts << (S,Aquamarine) >> { + + Logs bool + + } + class UndefinedEnvError << (S,Aquamarine) >> { + + Env string + + + Error() string + + } + class UnresolvedDependencies << (S,Aquamarine) >> { + - deps map[string][]unresolvedChartDependency + + + Add(chart string, url string, versionConstraint string, alias string) + + ToChartRequirements() *ChartRequirements + + } + interface WriteValuesOpt { + + Apply( *WriteValuesOpts) + + } + class WriteValuesOpts << (S,Aquamarine) >> { + + Set []string + + OutputFileTemplate string + + SkipCleanup bool + + + Apply(opts *WriteValuesOpts) + + } + class chartDependencyManager << (S,Aquamarine) >> { + - lockFilePath string + - logger *zap.SugaredLogger + - readFile func(string) ([]byte, error) + - writeFile func(string, []byte, os.FileMode) error + + + Name string + + - lockFileName() string + - updateHelm3(shell helmexec.DependencyUpdater, wd string, unresolved *UnresolvedDependencies) (*ResolvedDependencies, error) + - doUpdate(chartLockFile string, unresolved *UnresolvedDependencies, shell helmexec.DependencyUpdater, wd string) (*ResolvedDependencies, error) + - readBytes(filename string) ([]byte, error) + - writeBytes(filename string, data []byte) error + + + Update(shell helmexec.DependencyUpdater, wd string, unresolved *UnresolvedDependencies) (*ResolvedDependencies, error) + + Resolve(unresolved *UnresolvedDependencies) (*ResolvedDependencies, bool, error) + + } + class chartPrepareResult << (S,Aquamarine) >> { + - releaseName string + - releaseNamespace string + - releaseContext string + - chartName string + - chartPath string + - err error + - buildDeps bool + - skipRefresh bool + - chartFetchedByGoGetter bool + + } + class diffPrepareResult << (S,Aquamarine) >> { + - release *ReleaseSpec + - flags []string + - errors []*ReleaseError + - files []string + - upgradeDueToSkippedDiff bool + - suppressDiff bool + + } + class diffResult << (S,Aquamarine) >> { + - release *ReleaseSpec + - err *ReleaseError + - buf *bytes.Buffer + + } + class releaseTemplateData << (S,Aquamarine) >> { + + Environment environment.Environment + + Release releaseTemplateDataRelease + + Values map[string]any + + StateValues *map[string]any + + KubeContext string + + Namespace string + + Chart string + + } + class releaseTemplateDataRelease << (S,Aquamarine) >> { + + Name string + + Namespace string + + Labels map[string]string + + Chart string + + KubeContext string + + } + class resolveFileConfig << (S,Aquamarine) >> { + + IgnoreMissingGitBranch bool + + } + class result << (S,Aquamarine) >> { + - release ReleaseSpec + - err error + + } + class state.Inherits << (T, #FF7700) >> { + } + class state.TestOption << (T, #FF7700) >> { + } + class state.helmStateAlias << (T, #FF7700) >> { + } + class state.resolveFileOption << (T, #FF7700) >> { + } + class syncPrepareResult << (S,Aquamarine) >> { + - release *ReleaseSpec + - flags []string + - errors []*ReleaseError + - files []string + + } + class syncResult << (S,Aquamarine) >> { + - errors []*ReleaseError + + } + class unresolvedChartDependency << (S,Aquamarine) >> { + + ChartName string + + Repository string + + VersionConstraint string + + Alias string + + } +} +"state.ReleaseSetSpec" *-- "state.HelmState" +"state.ReleaseSpec" *-- "state.Release" +"state.ReleaseSpec" *-- "state.ReleaseError" +"state.ReleaseSpec" *-- "state.TemplateSpec" + +"state.DiffOpt" <|-- "state.DiffOpts" +"state.ReleaseFilter" <|-- "state.LabelFilter" +"state.LintOpt" <|-- "state.LintOpts" +"state.SyncOpt" <|-- "state.SyncOpts" +"state.TemplateOpt" <|-- "state.TemplateOpts" +"state.WriteValuesOpt" <|-- "state.WriteValuesOpts" + +namespace testhelper { + class TestFs << (S,Aquamarine) >> { + - dirs map[string]bool + - files map[string]string + - fileReaderCalls int + - successfulReads []string + + + Cwd string + + GlobFixtures map[string][]string + + DeleteFile func(string) error + + + ToFileSystem() *filesystem.FileSystem + + FileExistsAt(path string) bool + + FileExists(path string) (bool, error) + + DirectoryExistsAt(path string) bool + + ReadFile(filename string) ([]byte, error) + + SuccessfulReads() []string + + FileReaderCalls() int + + Glob(relPattern string) ([]string, error) + + Abs(path string) (string, error) + + Getwd() (string, error) + + Chdir(dir string) error + + } +} + + +namespace testutil { + class V3HelmExec << (S,Aquamarine) >> { + - isHelm3 bool + + + IsHelm3() bool + + } + class VersionHelmExec << (S,Aquamarine) >> { + - version string + + + IsVersionAtLeast(ver string) bool + + } + class noCallHelmExec << (S,Aquamarine) >> { + - doPanic() + + + TemplateRelease(name string, chart string, flags ...string) error + + ChartPull(chart string, path string, flags ...string) error + + ChartExport(chart string, path string) error + + UpdateDeps(chart string) error + + BuildDeps(name string, chart string, flags ...string) error + + SetExtraArgs(args ...string) + + SetHelmBinary(bin string) + + SetEnableLiveOutput(enableLiveOutput bool) + + SetDisableForceUpdate(forceUpdate bool) + + AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) error + + UpdateRepo() error + + RegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) error + + SyncRelease(context helmexec.HelmContext, name string, chart string, namespace string, flags ...string) error + + DiffRelease(context helmexec.HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) error + + ReleaseStatus(context helmexec.HelmContext, release string, flags ...string) error + + DeleteRelease(context helmexec.HelmContext, name string, flags ...string) error + + List(context helmexec.HelmContext, filter string, flags ...string) (string, error) + + DecryptSecret(context helmexec.HelmContext, name string, flags ...string) (string, error) + + TestRelease(context helmexec.HelmContext, name string, flags ...string) error + + Fetch(chart string, flags ...string) error + + Lint(name string, chart string, flags ...string) error + + IsHelm3() bool + + GetVersion() helmexec.Version + + IsVersionAtLeast(versionStr string) bool + + ShowChart(chartPath string) (chart.Metadata, error) + + } +} +"testutil.noCallHelmExec" *-- "testutil.V3HelmExec" +"testutil.noCallHelmExec" *-- "testutil.VersionHelmExec" + +"helmexec.DependencyUpdater" <|-- "testutil.noCallHelmExec" +"helmexec.Interface" <|-- "testutil.noCallHelmExec" +"state.RepoUpdater" <|-- "testutil.noCallHelmExec" + +namespace tmpl { + class Context << (S,Aquamarine) >> { + - preRender bool + - basePath string + - fs *filesystem.FileSystem + + - createFuncMap() template.FuncMap + - helperTPLs() ([]tplInfo, error) + - newTemplate() (*template.Template, error) + + + SetBasePath(path string) + + SetFileSystem(fs *filesystem.FileSystem) + + EnvExec(envs map[string]any, command string, args []any, inputs ...string) (string, error) + + Exec(command string, args []any, inputs ...string) (string, error) + + IsFile(filename string) (bool, error) + + IsDir(filename string) (bool, error) + + ReadFile(filename string) (string, error) + + ReadDir(path string) ([]string, error) + + ReadDirEntries(path string) ([]fs.DirEntry, error) + + Tpl(text string, data any) (string, error) + + CreateFuncMap() template.FuncMap + + RenderTemplateToBuffer(s string, data ...any) (*bytes.Buffer, error) + + } + class DisableInsecureFeaturesError << (S,Aquamarine) >> { + - err string + + + Error() string + + } + class FileRenderer << (S,Aquamarine) >> { + - fs *filesystem.FileSystem + + + Context *Context + + Data any + + + RenderTemplateFileToBuffer(file string) (*bytes.Buffer, error) + + RenderToBytes(path string) ([]byte, error) + + RenderTemplateContentToBuffer(content []byte) (*bytes.Buffer, error) + + RenderTemplateContentToString(content []byte) (string, error) + + } + class MockvalClient << (S,Aquamarine) >> { + - ctrl *gomock.Controller + - recorder *MockvalClientMockRecorder + + + EXPECT() *MockvalClientMockRecorder + + Eval(template map[string]any) (map[string]any, error) + + } + class MockvalClientMockRecorder << (S,Aquamarine) >> { + - mock *MockvalClient + + + Eval(arg0 any) *gomock.Call + + } + interface TextRenderer { + + RenderTemplateText(text string) (string, error) + + } + class noValueError << (S,Aquamarine) >> { + - msg string + + + Error() string + + } + class templateTextRenderer << (S,Aquamarine) >> { + + ReadText func(string) ([]byte, error) + + Context *Context + + Data any + + + RenderTemplateText(text string) (string, error) + + } + class tmpl.Values << (T, #FF7700) >> { + } + class tplInfo << (S,Aquamarine) >> { + - name string + - content string + + } + interface valClient { + + Eval(template map[string]any) (map[string]any, error) + + } +} + +"tmpl.valClient" <|-- "tmpl.MockvalClient" +"tmpl.TextRenderer" <|-- "tmpl.templateTextRenderer" + +namespace yaml { + interface Encoder { + + Encode( any) error + + Close() error + + } +} + + +"__builtin__.string" #.. "main.diffSource" +"app.func(*LoadOpts) " #.. "app.LoadOption" +"app.any" #.. "app.CacheConfigProvider" +"app.any" #.. "app.DAGConfigProvider" +"main.map[string]any" #.. "main.resource" +"policy.func(string, []byte) (bool, error)" #.. "policy.checkerFunc" +"state.func(*TestOpts) " #.. "state.TestOption" +"state.func(*resolveFileConfig) " #.. "state.resolveFileOption" +"state.HelmState" #.. "state.helmStateAlias" +"state.[]Inherit" #.. "state.Inherits" +"tmpl.map[string]any" #.. "tmpl.Values" +@enduml diff --git a/docs/reference/graph.svg b/docs/reference/graph.svg new file mode 100644 index 00000000..1bdff818 --- /dev/null +++ b/docs/reference/graph.svg @@ -0,0 +1,2849 @@ +appargparserconfigenvironmenterrorsbuiltineventexectesthelmexecstatefilesystemhcllangmainmaputilpolicyremotetesthelpertestutiltmplyamlAppfs *filesystem.FileSystemremote *remote.RemotevalsRuntime vals.Evaluatorhelmsmap[helmKey]helmexec.InterfacehelmsMutex sync.Mutexctx context.ContextOverrideKubeContext stringOverrideHelmBinary stringOverrideKustomizeBinary stringEnableLiveOutput boolStripArgsValuesOnExitError boolDisableForceUpdate boolLogger *zap.SugaredLoggerKubeconfig stringEnv stringNamespace stringChart stringSelectors []stringArgs stringValuesFiles []stringSetmap[string]anyFileOrDir stringdag(r *Run) errorlist(run *Run) ([]*HelmRelease, error)within(dir string, dofunc() error) errorvisitStateFiles(fileOrDir string, opts LoadOpts, dofunc(string, string) error) errorloadDesiredStateFromYaml(file string, opts ...LoadOpts) (*state.HelmState, error)getHelm(st *state.HelmState) helmexec.InterfacevisitStates(fileOrDir string, defOpts LoadOpts, convergefunc(*state.HelmState) (bool, []error)) errorvisitStatesWithSelectorsAndRemoteSupport(fileOrDir string, convergefunc(*state.HelmState) (bool, []error), includeTransitiveNeeds bool, opt ...LoadOption) errorfindDesiredStateFiles(specifiedPath string, opts LoadOpts) ([]string, error)getSelectedReleases(r *Run, includeTransitiveNeeds bool) ([]state.ReleaseSpec, []state.ReleaseSpec, error)apply(r *Run, c ApplyConfigProvider) (bool, bool, []error)delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error)diff(r *Run, c DiffConfigProvider) (*string, bool, bool, []error)lint(r *Run, c LintConfigProvider) (bool, []error, []error)status(r *Run, c StatusesConfigProvider) (bool, []error)sync(r *Run, c SyncConfigProvider) (bool, []error)template(r *Run, c TemplateConfigProvider) (bool, []error)withNeeds(r *Run, c DAGConfig, includeDisabled bool, ffunc(*state.HelmState) []error) (bool, []error)test(r *Run, c TestConfigProvider) []errorwriteValues(r *Run, c WriteValuesConfigProvider) (bool, []error)Init(c InitConfigProvider) errorDeps(c DepsConfigProvider) errorRepos(c ReposConfigProvider) errorDiff(c DiffConfigProvider) errorTemplate(c TemplateConfigProvider) errorWriteValues(c WriteValuesConfigProvider) errorLint(c LintConfigProvider) errorFetch(c FetchConfigProvider) errorSync(c SyncConfigProvider) errorApply(c ApplyConfigProvider) errorStatus(c StatusesConfigProvider) errorDestroy(c DestroyConfigProvider) errorTest(c TestConfigProvider) errorPrintDAGState(c DAGConfigProvider) errorPrintState(c StateConfigProvider) errorListReleases(c ListConfigProvider) errorForEachState(dofunc(*Run) (bool, []error), includeTransitiveNeeds bool, o ...LoadOption) errorWrap(convergefunc(*state.HelmState, helmexec.Interface) []error)func(*state.HelmState, helmexec.Interface, bool) (bool, []error)WrapWithoutSelector(convergefunc(*state.HelmState, helmexec.Interface) []error)func(*state.HelmState, helmexec.Interface) (bool, []error)ShowCacheDir(c CacheConfigProvider) errorCleanCacheDir(c CacheConfigProvider) errorApplyConfigProviderArgs() stringPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolCascade() stringHideNotes() boolTakeOwnership() boolSuppressOutputLineRegex() []stringValues() []stringSet() []stringSkipCRDs() boolSkipDeps() boolSkipRefresh() boolWait() boolWaitRetries() intWaitForJobs() boolIncludeTests() boolSuppress() []stringSuppressSecrets() boolShowSecrets() boolNoHooks() boolSuppressDiff() boolDetailedExitcode() boolStripTrailingCR() boolColor() boolNoColor() boolContext() intDiffOutput() stringValidate() boolSkipCleanup() boolSkipDiffOnInstall() boolDiffArgs() stringSyncArgs() stringSyncReleaseLabels() boolConfigProviderArgs() stringHelmBinary() stringKustomizeBinary() stringEnableLiveOutput() boolStripArgsValuesOnExitError() boolDisableForceUpdate() boolSkipDeps() boolSkipRefresh() boolFileOrDir() stringKubeContext() stringNamespace() stringChart() stringSelectors() []stringStateValuesSet()map[string]anyStateValuesFiles() []stringKubeconfig() stringEnv() stringContextupdatedReposmap[string]boolSyncReposOnce(st *state.HelmState, helm state.RepoUpdater) errorDAGConfigSkipNeeds() boolIncludeNeeds() boolIncludeTransitiveNeeds() boolDepsConfigProviderArgs() stringSkipRepos() boolIncludeTransitiveNeeds() boolDestroyConfigProviderArgs() stringCascade() stringSkipDeps() boolSkipRefresh() boolSkipCharts() boolDeleteWait() boolDeleteTimeout() intDiffConfigProviderArgs() stringPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolSuppressOutputLineRegex() []stringValues() []stringSet() []stringValidate() boolSkipCRDs() boolSkipDeps() boolSkipRefresh() boolIncludeTests() boolSuppress() []stringSuppressSecrets() boolShowSecrets() boolNoHooks() boolSuppressDiff() boolSkipDiffOnInstall() boolDiffArgs() stringDetailedExitcode() boolStripTrailingCR() boolColor() boolNoColor() boolContext() intDiffOutput() stringErrormsg stringcode *intErrors []errorError() stringCode() intFetchConfigProviderSkipDeps() boolSkipRefresh() boolOutputDir() stringOutputDirTemplate() stringHelmReleaseName stringNamespace stringEnabled boolInstalled boolLabels stringChart stringVersion stringHelmfileInithelmBinary stringconfigProvider InitConfigProviderlogger *zap.SugaredLoggerrunner helmexec.RunnerinstallHelmOnWindows() errorUpdateHelm() errorInstallHelm() errorWhetherContinue(ask string) errorCheckHelmPlugins() errorCheckHelm() errorInitialize() errorInitConfigProviderForce() boolLintConfigProviderArgs() stringValues() []stringSet() []stringSkipDeps() boolSkipRefresh() boolSkipCleanup() boolListConfigProviderOutput() stringSkipCharts() boolLoadOptsSelectors []stringEnvironment state.SubhelmfileEnvironmentSpecRetainValuesFiles boolCalleePath stringReverse boolFilter boolDeepCopy() LoadOptsMultiErrorErrors []errorError() stringNoMatchingHelmfileErrorselectors []stringenv stringError() stringOptsDAGEnabled boolRenderOptsReposConfigProviderArgs() stringIncludeTransitiveNeeds() boolRunstate *state.HelmStatehelm helmexec.Interfacectx ContextReleaseToChartmap[state.PrepareChartKey]stringAskfunc(string) boolaskForConfirmation(msg string) boolprepareChartsIfNeeded(helmfileCommand string, dir string, concurrency int, opts state.ChartPrepareOptions) (map[state.PrepareChartKey]string, error)withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, ffunc() ) errordiff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts) (*string,map[string]state.ReleaseSpec,map[string]state.ReleaseSpec, []error)Deps(c DepsConfigProvider) []errorRepos(c ReposConfigProvider) errorStateConfigProviderEmbedValues() boolStatusesConfigProviderArgs() stringSyncConfigProviderArgs() stringPostRenderer() stringSkipSchemaValidation() boolPostRendererArgs() []stringHideNotes() boolTakeOwnership() boolCascade() stringValues() []stringSet() []stringSkipCRDs() boolSkipDeps() boolSkipRefresh() boolWait() boolWaitRetries() intWaitForJobs() boolSyncArgs() stringValidate() boolSkipNeeds() boolIncludeNeeds() boolIncludeTransitiveNeeds() boolSyncReleaseLabels() boolTemplateConfigProviderArgs() stringPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolValues() []stringSet() []stringOutputDirTemplate() stringValidate() boolSkipDeps() boolSkipRefresh() boolSkipCleanup() boolSkipTests() boolOutputDir() stringIncludeCRDs() boolNoHooks() boolKubeVersion() stringShowOnly() []stringTestConfigProviderArgs() stringSkipDeps() boolSkipRefresh() boolTimeout() intCleanup() boolLogs() boolWriteValuesConfigProviderValues() []stringSet() []stringOutputFileTemplate() stringSkipDeps() boolSkipRefresh() boolSkipCleanup() boolIncludeTransitiveNeeds() boolCacheConfigProviderDAGConfigProviderLoadOptionconcurrencyConfigConcurrency() intcontextapp *Appst *state.HelmStateretainValues boolclean(errs []error) errorwrapErrs(errs ...error) errordesiredStateLoaderoverrideKubeContext stringoverrideHelmBinary stringoverrideKustomizeBinary stringenableLiveOutput boolenv stringnamespace stringchart stringfs *filesystem.FileSystemremote *remote.Remotelogger *zap.SugaredLoggervalsRuntime vals.EvaluatorlockFilePath stringgetHelmfunc(*state.HelmState) helmexec.InterfaceloadFile(inheritedEnv *environment.Environment, overrodeEnv *environment.Environment, baseDir string, file string, evaluateBases bool) (*state.HelmState, error)loadFileWithOverrides(inheritedEnv *environment.Environment, overrodeEnv *environment.Environment, baseDir string, file string, evaluateBases bool) (*state.HelmState, error)underlying() *state.StateCreatorrawLoad(yaml []byte, baseDir string, file string, evaluateBases bool, env *environment.Environment, overrodeEnv *environment.Environment) (*state.HelmState, error)load(env *environment.Environment, overrodeEnv *environment.Environment, baseDir string, filename string, content []byte, evaluateBases bool) (*state.HelmState, error)renderTemplatesToYaml(baseDir string, filename string, content []byte) (*bytes.Buffer, error)renderTemplatesToYamlWithEnv(baseDir string, filename string, content []byte, inherited *environment.Environment, overrode *environment.Environment) (*bytes.Buffer, error)twoPassRenderTemplateToYaml(inherited *environment.Environment, overrode *environment.Environment, baseDir string, filename string, content []byte) (*bytes.Buffer, error)Load(f string, opts LoadOpts) (*state.HelmState, error)helmKeyBinary stringContext stringhelmRecommendedPluginname stringversion stringrepo stringinteractiveInteractive() boolloggingConfigLogger() *zap.SugaredLoggervaluesControlModeReuseValues() boolResetValues() boolfunc(*LoadOpts)anyargMapmmap[string][]*keyValflags []stringSetArg(flag string, arg string, isSpace bool)keyValkey stringval stringspaceFlag boolApplyImplSet() []stringConcurrency() intContext() intDetailedExitcode() boolStripTrailingCR() boolDiffOutput() stringIncludeNeeds() boolIncludeTests() boolIncludeTransitiveNeeds() boolShowSecrets() boolNoHooks() boolSkipCRDs() boolSkipCleanup() boolSkipDiffOnInstall() boolDiffArgs() stringSkipNeeds() boolSuppress() []stringSuppressDiff() boolSuppressSecrets() boolValidate() boolValues() []stringWait() boolWaitRetries() intWaitForJobs() boolReuseValues() boolResetValues() boolPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolCascade() stringSuppressOutputLineRegex() []stringSyncArgs() stringHideNotes() boolTakeOwnership() boolSyncReleaseLabels() boolApplyOptionsSet []stringValues []stringConcurrency intValidate boolContext intOutput stringDetailedExitcode boolStripTrailingCR boolSkipCleanup boolSkipCRDs boolSkipNeeds boolIncludeNeeds boolIncludeTransitiveNeeds boolSkipDiffOnInstall boolDiffArgs stringIncludeTests boolSuppress []stringSuppressSecrets boolShowSecrets boolNoHooks boolSuppressDiff boolWait boolWaitRetries intWaitForJobs boolSkipSchemaValidation boolReuseValues boolResetValues boolPostRenderer stringPostRendererArgs []stringCascade stringSuppressOutputLineRegex []stringSyncArgs stringHideNotes boolTakeOwnership boolSyncReleaseLabels boolBuildImplEmbedValues() boolBuildOptionsEmbedValues boolCacheImplCacheOptionsDepsImplSkipRepos() boolIncludeTransitiveNeeds() boolConcurrency() intDepsOptionsSkipRepos boolConcurrency intDestroyImplConcurrency() intSkipCharts() boolCascade() stringDeleteWait() boolDeleteTimeout() intDestroyOptionsConcurrency intSkipCharts boolCascade stringDeleteWait boolDeleteTimeout intDiffImplConcurrency() intIncludeNeeds() boolIncludeTransitiveNeeds() boolSet() []stringSkipNeeds() boolValidate() boolValues() []stringContext() intDetailedExitcode() boolStripTrailingCR() boolDiffOutput() stringIncludeTests() boolShowSecrets() boolNoHooks() boolSkipCRDs() boolSkipDiffOnInstall() boolDiffArgs() stringSuppress() []stringSuppressDiff() boolSuppressSecrets() boolReuseValues() boolResetValues() boolPostRenderer() stringPostRendererArgs() []stringSuppressOutputLineRegex() []stringSkipSchemaValidation() boolDiffOptionsSet []stringValues []stringDetailedExitcode boolStripTrailingCR boolIncludeTests boolSkipNeeds boolIncludeNeeds boolIncludeTransitiveNeeds boolSkipDiffOnInstall boolShowSecrets boolNoHooks boolSuppress []stringSuppressSecrets boolConcurrency intValidate boolContext intOutput stringReuseValues boolResetValues boolPostRenderer stringPostRendererArgs []stringDiffArgs stringSuppressOutputLineRegex []stringSkipSchemaValidation boolFetchImplConcurrency() intOutputDir() stringOutputDirTemplate() stringFetchOptionsConcurrency intOutputDir stringOutputDirTemplate stringGlobalImplsetmap[string]anySetSet(setmap[string]any)HelmBinary() stringKustomizeBinary() stringKubeconfig() stringKubeContext() stringNamespace() stringChart() stringFileOrDir() stringSelectors() []stringStateValuesSet()map[string]anyRawStateValuesSet() []stringRawStateValuesSetString() []stringStateValuesFiles() []stringEnableLiveOutput() boolSkipDeps() boolSkipRefresh() boolStripArgsValuesOnExitError() boolDisableForceUpdate() boolLogger() *zap.SugaredLoggerColor() boolNoColor() boolEnv() stringValidateConfig() errorInteractive() boolArgs() stringGlobalOptionslogger *zap.SugaredLoggerHelmBinary stringKustomizeBinary stringFile stringEnvironment stringStateValuesSet []stringStateValuesSetString []stringStateValuesFile []stringSkipDeps boolSkipRefresh boolStripArgsValuesOnExitError boolDisableForceUpdate boolQuiet boolKubeconfig stringKubeContext stringDebug boolColor boolNoColor boolLogLevel stringNamespace stringChart stringSelector []stringAllowNoMatchingRelease boolEnableLiveOutput boolInteractive boolArgs stringLogOutput io.WriterLogger() *zap.SugaredLoggerSetLogger(logger *zap.SugaredLogger)InitImplForce() boolInitOptionsForce boolLintImplConcurrency() intSet() []stringValues() []stringSkipCleanup() boolIncludeNeeds() boolIncludeTransitiveNeeds() boolSkipNeeds() boolLintOptionsConcurrency intSet []stringValues []stringSkipNeeds boolIncludeNeeds boolIncludeTransitiveNeeds boolListImplOutput() stringSkipCharts() boolListOptionsOutput stringKeepTempDir boolSkipCharts boolReposImplIncludeTransitiveNeeds() boolReposOptionsShowDAGImplShowDAGOptionsStatusImplIncludeTransitiveNeeds() boolConcurrency() intStatusOptionsConcurrency intSyncImplConcurrency() intIncludeNeeds() boolIncludeTransitiveNeeds() boolSet() []stringSkipNeeds() boolValidate() boolValues() []stringSkipCRDs() boolWait() boolWaitRetries() intWaitForJobs() boolReuseValues() boolResetValues() boolPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolCascade() stringSyncArgs() stringHideNotes() boolTakeOwnership() boolSyncReleaseLabels() boolSyncOptionsSet []stringValues []stringConcurrency intValidate boolSkipNeeds boolIncludeNeeds boolIncludeTransitiveNeeds boolSkipCRDs boolWait boolWaitRetries intWaitForJobs boolReuseValues boolResetValues boolPostRenderer stringPostRendererArgs []stringSkipSchemaValidation boolCascade stringSyncArgs stringHideNotes boolTakeOwnership boolSyncReleaseLabels boolTemplateImplConcurrency() intIncludeCRDs() boolNoHooks() boolIncludeNeeds() boolIncludeTransitiveNeeds() boolOutputDir() stringOutputDirTemplate() stringSet() []stringSkipCleanup() boolSkipNeeds() boolSkipTests() boolValidate() boolValues() []stringPostRenderer() stringPostRendererArgs() []stringSkipSchemaValidation() boolKubeVersion() stringShowOnly() []stringTemplateOptionsSet []stringValues []stringOutputDir stringOutputDirTemplate stringConcurrency intValidate boolIncludeCRDs boolSkipTests boolSkipNeeds boolIncludeNeeds boolIncludeTransitiveNeeds boolNoHooks boolSkipCleanup boolPostRenderer stringPostRendererArgs []stringSkipSchemaValidation boolKubeVersion stringShowOnly []stringTestImplCmd *cobra.CommandConcurrency() intCleanup() boolLogs() boolTimeout() intTestOptionsConcurrency intCleanup boolLogs boolTimeout intWriteValuesImplConcurrency() intSet() []stringValues() []stringSkipCleanup() boolIncludeTransitiveNeeds() boolOutputFileTemplate() stringWriteValuesOptionsConcurrency intSet []stringValues []stringOutputFileTemplate stringEnvironmentName stringKubeContext stringValuesmap[string]anyDefaultsmap[string]anyDeepCopy() EnvironmentMerge(other *Environment) (*Environment, error)GetMergedValues() (map[string]any, error)ErrorFormatterFormat(s fmt.State, verb rune)ExitCoderExitCode() intExitErrorexitCode intmessage anyError() stringExitCode() interrorstringBusRunner helmexec.RunnerHooks []HookBasePath stringStateFilePath stringNamespace stringChart stringEnv environment.EnvironmentFs *filesystem.FileSystemLogger *zap.SugaredLoggerTrigger(evt string, evtErr error, contextmap[string]any) (bool, error)HookName stringEvents []stringCommand stringKubectlmap[string]stringArgs []stringShowLogs booleventName stringError errorAffectedUpgraded []*ReleaseDeleted []*ReleaseFailed []*ReleaseDiffKeyName stringChart stringFlags stringHelmCharts []stringRepo []stringReleases []ReleaseDeleted []ReleaseLinted []ReleaseTemplated []ReleaseListsmap[ListKey]stringDiffsmap[DiffKey]errorDiffed []ReleaseFailOnUnexpectedDiff boolFailOnUnexpectedList boolVersion *semver.VersionDiffMutex *sync.MutexChartsMutex *sync.MutexReleasesMutex *sync.MutexHelm3 boolUpdateDepsCallbacksmap[string]func(string) errorsync(m *sync.Mutex, ffunc() )UpdateDeps(chart string) errorBuildDeps(name string, chart string, flags ...string) errorSetExtraArgs(args ...string)SetHelmBinary(bin string)SetEnableLiveOutput(enableLiveOutput bool)SetDisableForceUpdate(forceUpdate bool)SkipSchemaValidation(skipSchemaValidation bool)AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) errorUpdateRepo() errorRegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) errorSyncRelease(context helmexec.HelmContext, name string, chart string, namespace string, flags ...string) errorDiffRelease(context helmexec.HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) errorReleaseStatus(context helmexec.HelmContext, release string, flags ...string) errorDeleteRelease(context helmexec.HelmContext, name string, flags ...string) errorList(context helmexec.HelmContext, filter string, flags ...string) (string, error)DecryptSecret(context helmexec.HelmContext, name string, flags ...string) (string, error)TestRelease(context helmexec.HelmContext, name string, flags ...string) errorFetch(chart string, flags ...string) errorLint(name string, chart string, flags ...string) errorTemplateRelease(name string, chart string, flags ...string) errorChartPull(chart string, path string, flags ...string) errorChartExport(chart string, path string) errorIsHelm3() boolGetVersion() helmexec.VersionIsVersionAtLeast(versionStr string) boolShowChart(chartPath string) (chart.Metadata, error)ListKeyFilter stringFlags stringString() stringReleaseName stringFlags []stringDependencyUpdaterUpdateDeps(chart string) errorIsHelm3() boolInterfaceSetExtraArgs(args ...string)SetHelmBinary(bin string)SetEnableLiveOutput(enableLiveOutput bool)SetDisableForceUpdate(forceUpdate bool)AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) errorUpdateRepo() errorRegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) errorBuildDeps(name string, chart string, flags ...string) errorUpdateDeps(chart string) errorSyncRelease(context HelmContext, name string, chart string, namespace string, flags ...string) errorDiffRelease(context HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) errorTemplateRelease(name string, chart string, flags ...string) errorFetch(chart string, flags ...string) errorChartPull(chart string, path string, flags ...string) errorChartExport(chart string, path string) errorLint(name string, chart string, flags ...string) errorReleaseStatus(context HelmContext, name string, flags ...string) errorDeleteRelease(context HelmContext, name string, flags ...string) errorTestRelease(context HelmContext, name string, flags ...string) errorList(context HelmContext, filter string, flags ...string) (string, error)DecryptSecret(context HelmContext, name string, flags ...string) (string, error)IsHelm3() boolGetVersion() VersionIsVersionAtLeast(versionStr string) boolShowChart(chart string) (chart.Metadata, error)ExitErrorMessage stringCode intError() stringExitStatus() intHelmContextHistoryMax intWorkerIndex intWriter io.WriterHelmExecOptionsEnableLiveOutput boolDisableForceUpdate boolRunnerExecute(cmd string, args []string, envmap[string]string, enableLiveOutput bool) ([]byte, error)ExecuteStdIn(cmd string, args []string, envmap[string]string, stdin io.Reader) ([]byte, error)ShellRunnerDir stringStripArgsValuesOnExitError boolLogger *zap.SugaredLoggerCtx context.ContextExecute(cmd string, args []string, envmap[string]string, enableLiveOutput bool) ([]byte, error)ExecuteStdIn(cmd string, args []string, envmap[string]string, stdin io.Reader) ([]byte, error)VersionMajor intMinor intPatch intdecryptedSecretmutex sync.RWMutexbytes []byteerr errorexecerhelmBinary stringoptions HelmExecOptionsversion *semver.Versionrunner Runnerlogger *zap.SugaredLoggerkubeconfig stringkubeContext stringextra []stringdecryptedSecretMutex sync.MutexdecryptedSecretsmap[string]*decryptedSecretwriteTempFilefunc([]byte) (string, error)exec(args []string, envmap[string]string, overrideEnableLiveOutput *bool) ([]byte, error)execStdIn(args []string, envmap[string]string, stdin io.Reader) ([]byte, error)azcli(name string) ([]byte, error)info(out []byte)write(w io.Writer, out []byte)SetExtraArgs(args ...string)SetHelmBinary(bin string)SetEnableLiveOutput(enableLiveOutput bool)SetDisableForceUpdate(forceUpdate bool)AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) errorUpdateRepo() errorRegistryLogin(repository string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) errorBuildDeps(name string, chart string, flags ...string) errorUpdateDeps(chart string) errorSyncRelease(context HelmContext, name string, chart string, namespace string, flags ...string) errorReleaseStatus(context HelmContext, name string, flags ...string) errorList(context HelmContext, filter string, flags ...string) (string, error)DecryptSecret(context HelmContext, name string, flags ...string) (string, error)TemplateRelease(name string, chart string, flags ...string) errorDiffRelease(context HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) errorLint(name string, chart string, flags ...string) errorFetch(chart string, flags ...string) errorChartPull(chart string, path string, flags ...string) errorChartExport(chart string, path string) errorDeleteRelease(context HelmContext, name string, flags ...string) errorTestRelease(context HelmContext, name string, flags ...string) errorAddPlugin(name string, path string, version string) errorUpdatePlugin(name string) errorIsHelm3() boolGetVersion() VersionIsVersionAtLeast(versionStr string) boolShowChart(chartPath string) (chart.Metadata, error)logWriterlog *zap.SugaredLoggerprefix stringWrite(p []byte) (int, error)logWriterGeneratorlog *zap.SugaredLoggerWriter(prefix string) *logWriterRepoUpdaterIsHelm3() boolAddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) errorUpdateRepo() errorRegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) errorAffectedReleasesUpgraded []*ReleaseSpecDeleted []*ReleaseSpecFailed []*ReleaseSpecDeleteFailed []*ReleaseSpecDisplayAffectedReleases(logger *zap.SugaredLogger)ChartLockedRequirementsVersion stringResolvedDependencies []ResolvedChartDependencyDigest stringGenerated stringChartMetaName stringChartPrepareOptionsForceDownload boolSkipRepos boolSkipDeps boolSkipRefresh boolSkipResolve boolSkipCleanup boolValidate boolIncludeCRDs *boolWait boolWaitRetries intWaitForJobs boolOutputDir stringOutputDirTemplate stringIncludeTransitiveNeeds boolConcurrency intKubeVersion stringSet []stringValues []stringDeleteWait boolDeleteTimeout intChartRequirementsUnresolvedDependencies []unresolvedChartDependencyChartifyOpts *chartify.ChartifyOptsCleanfunc()CyclicReleaseTemplateInheritanceErrorMessage stringError() stringDependencyChart stringVersion stringAlias stringDiffOptApply( *DiffOpts)DiffOptsContext intOutput stringColor boolNoColor boolSet []stringSkipCleanup boolSkipDiffOnInstall boolDiffArgs stringReuseValues boolResetValues boolPostRenderer stringPostRendererArgs []stringSuppressOutputLineRegex []stringSkipSchemaValidation boolApply(opts *DiffOpts)EnvironmentSpecValues []anySecrets []stringKubeContext stringMissingFileHandler *stringMissingFileHandlerConfig MissingFileHandlerConfigEnvironmentTemplateDataEnvironment environment.EnvironmentNamespace stringValuesmap[string]anyStateValues *map[string]anyEnvironmentValuesLoaderstorage *Storagefs *filesystem.FileSystemlogger *zap.SugaredLoggerremote *remote.RemoteLoadEnvironmentValues(missingFileHandler *string, valuesEntries []any, ctxEnv *environment.Environment, envName string) (map[string]any, error)HelmSpecKubeContext stringArgs []stringDiffArgs []stringSyncArgs []stringVerify boolKeyring stringEnableDNS boolSkipSchemaValidation *boolDevel boolWait boolWaitRetries intWaitForJobs boolTimeout intRecreatePods boolForce boolAtomic boolCleanupOnFail boolHistoryMax *intCreateNamespace *boolSkipDeps boolSkipRefresh boolReuseValues boolPostRenderer *stringPostRendererArgs []stringCascade *stringSuppressOutputLineRegex []stringDisableValidation *boolDisableOpenAPIValidation *boolInsecureSkipTLSVerify boolPlainHttp boolDeleteWait boolDeleteTimeout intSyncReleaseLabels boolHelmStatebasePath stringlogger *zap.SugaredLoggerfs *filesystem.FileSystemvalsRuntime vals.EvaluatorFilePath stringRenderedValuesmap[string]anytempDirfunc(string, string) (string, error)mergeLockedDependencies() (*HelmState, error)updateDependenciesInTempDir(shell helmexec.DependencyUpdater, tempDirfunc(string, string) (string, error)) (*HelmState, error)loadValuesEntries(missingFileHandler *string, entries []any, remote *remote.Remote, ctxEnv *environment.Environment, envName string) (map[string]any, error)appendHelmXFlags(flags []string, release *ReleaseSpec) []stringappendLabelsFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, syncReleaseLabels bool) []stringappendPostRenderFlags(flags []string, release *ReleaseSpec, postRenderer string) []stringappendPostRenderArgsFlags(flags []string, release *ReleaseSpec, postRendererArgs []string) []stringappendSkipSchemaValidationFlags(flags []string, release *ReleaseSpec, skipSchemaValidation bool) []stringappendSuppressOutputLineRegexFlags(flags []string, release *ReleaseSpec, suppressOutputLineRegex []string) []stringappendWaitForJobsFlags(flags []string, release *ReleaseSpec, ops *SyncOpts) []stringappendWaitFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, ops *SyncOpts) []stringappendCascadeFlags(flags []string, helm helmexec.Interface, release *ReleaseSpec, cascade string) []stringappendHideNotesFlags(flags []string, helm helmexec.Interface, ops *SyncOpts) []stringappendTakeOwnershipFlags(flags []string, helm helmexec.Interface, ops *SyncOpts) []stringappendShowOnlyFlags(flags []string, showOnly []string) []stringdownloadChartWithGoGetter(r *ReleaseSpec) (string, error)goGetterChart(chart string, dir string, cacheDir string, force bool) (string, error)reformat(spec *ReleaseSpec) []stringprepareSyncReleases(helm helmexec.Interface, additionalValues []string, concurrency int, opt ...SyncOpt) ([]syncPrepareResult, []error)isReleaseInstalled(context helmexec.HelmContext, helm helmexec.Interface, release ReleaseSpec) (bool, error)appendDeleteWaitFlags(args []string, release *ReleaseSpec) []stringlistReleases(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error)getDeployedVersion(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error)runHelmDepBuilds(helm helmexec.Interface, concurrency int, builds []*chartPrepareResult) errorcommonDiffFlags(detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opt *DiffOpts) []stringprepareDiffReleases(helm helmexec.Interface, additionalValues []string, concurrency int, detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, opts ...DiffOpt) ([]diffPrepareResult, []error)createHelmContext(spec *ReleaseSpec, workerIndex int) helmexec.HelmContextcreateHelmContextWithWriter(spec *ReleaseSpec, w io.Writer) helmexec.HelmContexttriggerGlobalReleaseEvent(evt string, evtErr error, helmfileCmd string) (bool, error)triggerPrepareEvent(r *ReleaseSpec, helmfileCommand string) (bool, error)triggerPresyncEvent(r *ReleaseSpec, helmfileCommand string) (bool, error)triggerPostsyncEvent(r *ReleaseSpec, evtErr error, helmfileCommand string) (bool, error)triggerReleaseEvent(evt string, evtErr error, r *ReleaseSpec, helmfileCmd string) (bool, error)appendConnectionFlags(flags []string, release *ReleaseSpec) []stringappendExtraDiffFlags(flags []string, opt *DiffOpts) []stringappendExtraSyncFlags(flags []string, opt *SyncOpts) []stringappendVerifyFlags(flags []string, release *ReleaseSpec) []stringappendKeyringFlags(flags []string, release *ReleaseSpec) []stringkubeConnectionFlags(release *ReleaseSpec) []stringappendChartDownloadFlags(flags []string, release *ReleaseSpec) []stringneedsPlainHttp(release *ReleaseSpec, repo *RepositorySpec) boolneedsInsecureSkipTLSVerify(release *ReleaseSpec, repo *RepositorySpec) booltimeoutFlags(release *ReleaseSpec) []stringflagsForUpgrade(helm helmexec.Interface, release *ReleaseSpec, workerIndex int, opt *SyncOpts) ([]string, []string, error)flagsForTemplate(helm helmexec.Interface, release *ReleaseSpec, workerIndex int, opt *TemplateOpts) ([]string, []string, error)flagsForDiff(helm helmexec.Interface, release *ReleaseSpec, disableValidation bool, workerIndex int, opt *DiffOpts) ([]string, []string, error)appendChartVersionFlags(flags []string, release *ReleaseSpec) []stringchartOCIFlags(r *ReleaseSpec) []stringappendValuesControlModeFlag(flags []string, reuseValues bool, resetValues bool) []stringgetApiVersions(r *ReleaseSpec) []stringgetKubeVersion(r *ReleaseSpec, kubeVersion string) stringappendApiVersionsFlags(flags []string, r *ReleaseSpec, kubeVersion string) []stringisDevelopment(release *ReleaseSpec) boolflagsForLint(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, []string, error)newReleaseTemplateData(release *ReleaseSpec) releaseTemplateDatanewReleaseTemplateFuncMap(dir string) template.FuncMapstorage() *StorageremoveFiles(files []string)generateTemporaryReleaseValuesFiles(release *ReleaseSpec, values []any, missingFileHandler *string) ([]string, error)generateVanillaValuesFiles(release *ReleaseSpec) ([]string, error)generateSecretValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error)generateValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error)namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, []string, error)setFlags(setValues []SetValue) ([]string, error)setStringFlags(setValues []SetValue) ([]string, error)getOCIChart(release *ReleaseSpec, tempDir string, helm helmexec.Interface, outputDirTemplate string) (*string, error)getOCIQualifiedChartName(release *ReleaseSpec, helm helmexec.Interface) (string, string, string, error)getOCIChartPath(tempDir string, release *ReleaseSpec, chartName string, chartVersion string, outputDirTemplate string) (string, error)createReleaseTemplateData(release *ReleaseSpec, valsmap[string]any) releaseTemplateDatareleaseWithInheritedTemplate(r *ReleaseSpec, inheritancePath []string) (*ReleaseSpec, error)scatterGather(concurrency int, items int, produceInputsfunc() , receiveInputsAndProduceIntermediatesfunc(int) , aggregateIntermediatesfunc() )scatterGatherReleases(helm helmexec.Interface, concurrency int, dofunc(ReleaseSpec, int) error) []erroriterateOnReleases(helm helmexec.Interface, concurrency int, inputs []ReleaseSpec, dofunc(ReleaseSpec, int) error) []errorPrepareChartify(helm helmexec.Interface, release *ReleaseSpec, chart string, workerIndex int) (*Chartify,func() , error)UnmarshalYAML(unmarshalfunc(any) error) errorApplyOverrides(spec *ReleaseSpec)SyncRepos(helm RepoUpdater, shouldSkipmap[string]bool) ([]string, error)DetectReleasesToBeDeletedForSync(helm helmexec.Interface, releases []ReleaseSpec) ([]ReleaseSpec, error)DetectReleasesToBeDeleted(helm helmexec.Interface, releases []ReleaseSpec) ([]ReleaseSpec, error)DeleteReleasesForSync(affectedReleases *AffectedReleases, helm helmexec.Interface, workerLimit int, cascade string) []errorSyncReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, additionalValues []string, workerLimit int, opt ...SyncOpt) []errorGetRepositoryAndNameFromChartName(chartName string) (*RepositorySpec, string)PrepareCharts(helm helmexec.Interface, dir string, concurrency int, helmfileCommand string, opts ChartPrepareOptions) (map[PrepareChartKey]string, []error)TemplateReleases(helm helmexec.Interface, outputDir string, additionalValues []string, args []string, workerLimit int, validate bool, opt ...TemplateOpt) []errorWriteReleasesValues(helm helmexec.Interface, additionalValues []string, opt ...WriteValuesOpt) []errorLintReleases(helm helmexec.Interface, additionalValues []string, args []string, workerLimit int, opt ...LintOpt) []errorDiffReleases(helm helmexec.Interface, additionalValues []string, workerLimit int, detailedExitCode bool, stripTrailingCR bool, includeTests bool, suppress []string, suppressSecrets bool, showSecrets bool, noHooks bool, suppressDiff bool, triggerCleanupEvents bool, opt ...DiffOpt) ([]ReleaseSpec, []error)ReleaseStatuses(helm helmexec.Interface, workerLimit int) []errorDeleteReleases(affectedReleases *AffectedReleases, helm helmexec.Interface, concurrency int, purge bool, cascade string) []errorTestReleases(helm helmexec.Interface, cleanup bool, timeout int, concurrency int, options ...TestOption) []errorClean() []errorGetReleasesWithOverrides() ([]ReleaseSpec, error)GetReleasesWithLabels() []ReleaseSpecSelectReleases(includeTransitiveNeeds bool) ([]Release, error)GetSelectedReleases(includeTransitiveNeeds bool) ([]ReleaseSpec, error)FilterReleases(includeTransitiveNeeds bool) errorTriggerGlobalPrepareEvent(helmfileCommand string) (bool, error)TriggerGlobalCleanupEvent(helmfileCommand string) (bool, error)TriggerCleanupEvent(r *ReleaseSpec, helmfileCommand string) (bool, error)TriggerPreapplyEvent(r *ReleaseSpec, helmfileCommand string) (bool, error)ResolveDeps() (*HelmState, error)UpdateDeps(helm helmexec.Interface, includeTransitiveNeeds bool) []errorRenderReleaseValuesFileToBytes(release *ReleaseSpec, path string) ([]byte, error)ExpandedHelmfiles() ([]SubHelmfileSpec, error)GenerateOutputDir(outputDir string, release *ReleaseSpec, outputDirTemplate string) (string, error)GenerateOutputFilePath(release *ReleaseSpec, outputFileTemplate string) (string, error)ToYaml() (string, error)LoadYAMLForEmbedding(release *ReleaseSpec, entries []any, missingFileHandler *string, pathPrefix string) ([]any, error)Reverse()IsOCIChart(chart string) boolFullFilePath() (string, error)Values()map[string]anyExecuteTemplates() (*HelmState, error)PlanReleases(opts PlanOptions) ([][]Release, error)InheritTemplate stringExcept []stringInheritsUnmarshalYAML(unmarshalfunc(any) error) errorLabelFilterpositiveLabels [][]stringnegativeLabels [][]stringMatch(r ReleaseSpec) boolLintOptApply( *LintOpts)LintOptsSet []stringSkipCleanup boolApply(opts *LintOpts)MissingFileHandlerConfigIgnoreMissingGitBranch boolresolveFileOptions() []resolveFileOptionPlanOptionsPurpose stringReverse boolIncludeNeeds boolIncludeTransitiveNeeds boolSkipNeeds boolSelectedReleases []ReleaseSpecPrepareChartKeyNamespace stringReleaseFiltered boolReleaseErrorerr errorCode intError() stringReleaseFilterMatch(r ReleaseSpec) boolReleaseSetSpecDefaultHelmBinary stringDefaultKustomizeBinary stringDefaultValues []anyEnvironmentsmap[string]EnvironmentSpecBases []stringHelmDefaults HelmSpecHelmfiles []SubHelmfileSpecOverrideKubeContext stringOverrideNamespace stringOverrideChart stringRepositories []RepositorySpecCommonLabelsmap[string]stringReleases []ReleaseSpecOrginReleases []ReleaseSpecSelectors []stringApiVersions []stringKubeVersion stringHooks []event.HookTemplatesmap[string]TemplateSpecEnv environment.EnvironmentMissingFileHandler stringMissingFileHandlerConfig MissingFileHandlerConfigLockFile stringReleaseSpecduration time.DurationinstalledVersion stringChart stringChartPath stringDirectory stringVersion stringVerify *boolKeyring stringEnableDNS *boolDevel *boolWait *boolWaitRetries *intWaitForJobs *boolTimeout *intRecreatePods *boolForce *boolInstalled *boolAtomic *boolCleanupOnFail *boolHistoryMax *intCondition stringCreateNamespace *boolDisableOpenAPIValidation *boolDisableValidation *boolDisableValidationOnInstall *boolMissingFileHandler *stringNeeds []stringHooks []event.HookName stringNamespace stringLabelsmap[string]stringValues []anySecrets []anySetValues []SetValueSetStringValues []SetValueValuesTemplate []anySetValuesTemplate []SetValueApiVersions []stringKubeVersion stringEnvValues []SetValueValuesPathPrefix stringKubeContext stringInsecureSkipTLSVerify boolPlainHttp boolVerifyTemplate *stringWaitTemplate *stringInstalledTemplate *stringDependencies []DependencyJSONPatches []anyStrategicMergePatches []anyTransformers []anyAdopt []stringForceGoGetter boolForceNamespace stringSkipDeps *boolSkipRefresh *boolPostRenderer *stringSkipSchemaValidation *boolPostRendererArgs []stringCascade *stringSuppressOutputLineRegex []stringInherit InheritsSuppressDiff *boolDeleteWait *boolDeleteTimeout *intSyncReleaseLabels boolExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*ReleaseSpec, error)Clone() (*ReleaseSpec, error)Desired() boolChartPathOrName() stringRepositorySpecName stringURL stringCaFile stringCertFile stringKeyFile stringUsername stringPassword stringRegistryConfig stringManaged stringOCI boolVerify boolKeyring stringPassCredentials boolSkipTLSVerify boolPlainHttp boolResolvedChartDependencyChartName stringRepository stringVersion stringResolvedDependenciesdepsmap[string][]ResolvedChartDependencyadd(dep ResolvedChartDependency) errorGet(chart string, versionConstraint string) (string, error)SetValueName stringValue stringFile stringValues []stringStateCreatorlogger *zap.SugaredLoggerfs *filesystem.FileSystemvalsRuntime vals.EvaluatoroverrideHelmBinary stringoverrideKustomizeBinary stringenableLiveOutput boolremote *remote.RemotelockFile stringStrict boolgetHelmfunc(*HelmState) helmexec.InterfaceLoadFilefunc(*environment.Environment, *environment.Environment, string, string, bool) (*HelmState, error)loadBases(envValues *environment.Environment, overrodeEnv *environment.Environment, st *HelmState, baseDir string) (*HelmState, error)loadEnvValues(st *HelmState, name string, failOnMissingEnv bool, ctxEnv *environment.Environment, overrode *environment.Environment) (*environment.Environment, error)scatterGatherEnvSecretFiles(st *HelmState, envSecretFiles []string, envValsmap[string]any, keepFileExtensions []string) ([]string, error)Parse(content []byte, baseDir string, file string) (*HelmState, error)LoadEnvValues(target *HelmState, env string, failOnMissingEnv bool, ctxEnv *environment.Environment, overrode *environment.Environment) (*HelmState, error)ParseAndLoad(content []byte, baseDir string, file string, envName string, failOnMissingEnv bool, evaluateBases bool, envValues *environment.Environment, overrode *environment.Environment) (*HelmState, error)StateLoadErrorMsg stringCause errorError() stringStoragelogger *zap.SugaredLoggerbasePath stringfs *filesystem.FileSystemFilePath stringresolveFile(missingFileHandler *string, tpe string, path string, opts ...resolveFileOption) ([]string, bool, error)normalizePath(path string) stringnormalizeSetFilePath(path string, goos string) stringExpandPaths(globPattern string) ([]string, error)JoinBase(relPath string) stringSubHelmfileSpecPath stringSelectors []stringSelectorsInherited boolEnvironment SubhelmfileEnvironmentSpecMarshalYAML() (any, error)UnmarshalYAML(unmarshalfunc(any) error) errorSubhelmfileEnvironmentSpecOverrideValues []anySyncOptApply( *SyncOpts)SyncOptsSet []stringSkipCleanup boolSkipCRDs boolWait boolWaitRetries intWaitForJobs boolSyncReleaseLabels boolReuseValues boolResetValues boolPostRenderer stringSkipSchemaValidation boolPostRendererArgs []stringSyncArgs stringHideNotes boolTakeOwnership boolApply(opts *SyncOpts)TemplateOptApply( *TemplateOpts)TemplateOptsSet []stringSkipCleanup boolOutputDirTemplate stringIncludeCRDs boolNoHooks boolSkipTests boolPostRenderer stringPostRendererArgs []stringKubeVersion stringShowOnly []stringSkipSchemaValidation boolApply(opts *TemplateOpts)TemplateSpecTestOptsLogs boolUndefinedEnvErrorEnv stringError() stringUnresolvedDependenciesdepsmap[string][]unresolvedChartDependencyAdd(chart string, url string, versionConstraint string, alias string)ToChartRequirements() *ChartRequirementsWriteValuesOptApply( *WriteValuesOpts)WriteValuesOptsSet []stringOutputFileTemplate stringSkipCleanup boolApply(opts *WriteValuesOpts)chartDependencyManagerlockFilePath stringlogger *zap.SugaredLoggerName stringreadFilefunc(string) ([]byte, error)writeFilefunc(string, []byte, os.FileMode) errorlockFileName() stringupdateHelm3(shell helmexec.DependencyUpdater, wd string, unresolved *UnresolvedDependencies) (*ResolvedDependencies, error)doUpdate(chartLockFile string, unresolved *UnresolvedDependencies, shell helmexec.DependencyUpdater, wd string) (*ResolvedDependencies, error)readBytes(filename string) ([]byte, error)writeBytes(filename string, data []byte) errorUpdate(shell helmexec.DependencyUpdater, wd string, unresolved *UnresolvedDependencies) (*ResolvedDependencies, error)Resolve(unresolved *UnresolvedDependencies) (*ResolvedDependencies, bool, error)chartPrepareResultreleaseName stringreleaseNamespace stringreleaseContext stringchartName stringchartPath stringerr errorbuildDeps boolskipRefresh boolchartFetchedByGoGetter booldiffPrepareResultrelease *ReleaseSpecflags []stringerrors []*ReleaseErrorfiles []stringupgradeDueToSkippedDiff boolsuppressDiff booldiffResultrelease *ReleaseSpecerr *ReleaseErrorbuf *bytes.BufferreleaseTemplateDataEnvironment environment.EnvironmentRelease releaseTemplateDataReleaseValuesmap[string]anyStateValues *map[string]anyKubeContext stringNamespace stringChart stringreleaseTemplateDataReleaseName stringNamespace stringLabelsmap[string]stringChart stringKubeContext stringresolveFileConfigIgnoreMissingGitBranch boolresultrelease ReleaseSpecerr errorTestOptionhelmStateAliasresolveFileOptionsyncPrepareResultrelease *ReleaseSpecflags []stringerrors []*ReleaseErrorfiles []stringsyncResulterrors []*ReleaseErrorunresolvedChartDependencyChartName stringRepository stringVersionConstraint stringAlias stringfunc(*TestOpts)func(*resolveFileConfig)[]InheritFileSystemReadFilefunc(string) ([]byte, error)ReadDirfunc(string) ([]fs.DirEntry, error)DeleteFilefunc(string) errorFileExistsfunc(string) (bool, error)Globfunc(string) ([]string, error)FileExistsAtfunc(string) boolDirectoryExistsAtfunc(string) boolDirfunc(string) stringStatfunc(string) (os.FileInfo, error)Getwdfunc() (string, error)Chdirfunc(string) errorAbsfunc(string) (string, error)EvalSymlinksfunc(string) (string, error)stat(name string) (os.FileInfo, error)readFile(name string) ([]byte, error)fileExistsAtDefault(path string) boolfileExistsDefault(path string) (bool, error)directoryExistsDefault(path string) boolresolveSymlinks(path string) (string, error)absDefault(path string) (string, error)fileStatname stringsize int64mode fs.FileModemodTime time.TimeName() stringSize() int64Mode() fs.FileModeModTime() time.TimeIsDir() boolSys() anyHCLLoaderhclFilesPath []stringfs *filesystem.FileSystemlogger *zap.SugaredLoggercreateDAGGraph(HelmfileHCLValuesmap[string]*HelmfileHCLValue, blockType string) (*dag.Topology, error)decodeGraph(dagTopology *dag.Topology, blocktype string, varsmap[string]*HelmfileHCLValue, additionalLocalContextmap[string]map[string]cty.Value) (map[string]cty.Value, error)readHCLs() (map[string]*HelmfileHCLValue,map[string]map[string]*HelmfileHCLValue, hcl.Diagnostics)readHCL(hvarsmap[string]*HelmfileHCLValue, file string) (map[string]*HelmfileHCLValue,map[string]*HelmfileHCLValue, hcl.Diagnostics)decodeHelmfileHCLValuesBlock(block *hcl.Block) (map[string]*HelmfileHCLValue, hcl.Diagnostics)parseSingleAttrRef(traversal hcl.Traversal, blockType string) (string, hcl.Diagnostics)convertToGo(srcmap[string]cty.Value) (map[string]any, error)AddFile(file string)AddFiles(files []string)Length() intHCLRender() (map[string]any, error)HelmfileHCLValueName stringExpr hcl.ExpressionRange hcl.RangediffSourceresourcegetMeta() metagetID() stringmetaapiVersion stringkind stringname stringnamespace stringpairmeta metaleft resourceright resourceadd(node resource, source diffSource) errorpairslist []*pairisSameResource(meta1 meta, meta2 meta) booladd(node resource, source diffSource) errormap[string]anyarggetMap(map[string]any)map[string]anyset(map[string]any, any)indexedKeyArgkey stringindex intgetArray(mmap[string]any) []anygetMap(mmap[string]any)map[string]anyset(mmap[string]any, value any)keyArgkey stringgetMap(mmap[string]any)map[string]anyset(mmap[string]any, value any)checkerFuncfunc(string, []byte) (bool, error)GetterGet(wd string, src string, dst string) errorGoGetterLogger *zap.SugaredLoggerGet(wd string, src string, dst string) errorHttpGetterLogger *zap.SugaredLoggerGet(wd string, src string, dst string) errorInvalidURLErrorerr stringError() stringRemotefs *filesystem.FileSystemLogger *zap.SugaredLoggerHome stringGetter GetterS3Getter GetterHttpGetter GetterLocate(urlOrPath string, cacheDirOpt ...string) (string, error)Fetch(path string, cacheDirOpt ...string) (string, error)S3GetterLogger *zap.SugaredLoggerGet(wd string, src string, dst string) errorS3FileExists(path string) (string, error)SourceGetter stringTestFsdirsmap[string]boolfilesmap[string]stringfileReaderCalls intsuccessfulReads []stringCwd stringGlobFixturesmap[string][]stringDeleteFilefunc(string) errorToFileSystem() *filesystem.FileSystemFileExistsAt(path string) boolFileExists(path string) (bool, error)DirectoryExistsAt(path string) boolReadFile(filename string) ([]byte, error)SuccessfulReads() []stringFileReaderCalls() intGlob(relPattern string) ([]string, error)Abs(path string) (string, error)Getwd() (string, error)Chdir(dir string) errorV3HelmExecisHelm3 boolIsHelm3() boolVersionHelmExecversion stringIsVersionAtLeast(ver string) boolnoCallHelmExecdoPanic()TemplateRelease(name string, chart string, flags ...string) errorChartPull(chart string, path string, flags ...string) errorChartExport(chart string, path string) errorUpdateDeps(chart string) errorBuildDeps(name string, chart string, flags ...string) errorSetExtraArgs(args ...string)SetHelmBinary(bin string)SetEnableLiveOutput(enableLiveOutput bool)SetDisableForceUpdate(forceUpdate bool)AddRepo(name string, repository string, cafile string, certfile string, keyfile string, username string, password string, managed string, passCredentials bool, skipTLSVerify bool) errorUpdateRepo() errorRegistryLogin(name string, username string, password string, caFile string, certFile string, keyFile string, skipTLSVerify bool) errorSyncRelease(context helmexec.HelmContext, name string, chart string, namespace string, flags ...string) errorDiffRelease(context helmexec.HelmContext, name string, chart string, namespace string, suppressDiff bool, flags ...string) errorReleaseStatus(context helmexec.HelmContext, release string, flags ...string) errorDeleteRelease(context helmexec.HelmContext, name string, flags ...string) errorList(context helmexec.HelmContext, filter string, flags ...string) (string, error)DecryptSecret(context helmexec.HelmContext, name string, flags ...string) (string, error)TestRelease(context helmexec.HelmContext, name string, flags ...string) errorFetch(chart string, flags ...string) errorLint(name string, chart string, flags ...string) errorIsHelm3() boolGetVersion() helmexec.VersionIsVersionAtLeast(versionStr string) boolShowChart(chartPath string) (chart.Metadata, error)ContextpreRender boolbasePath stringfs *filesystem.FileSystemcreateFuncMap() template.FuncMaphelperTPLs() ([]tplInfo, error)newTemplate() (*template.Template, error)SetBasePath(path string)SetFileSystem(fs *filesystem.FileSystem)EnvExec(envsmap[string]any, command string, args []any, inputs ...string) (string, error)Exec(command string, args []any, inputs ...string) (string, error)IsFile(filename string) (bool, error)IsDir(filename string) (bool, error)ReadFile(filename string) (string, error)ReadDir(path string) ([]string, error)ReadDirEntries(path string) ([]fs.DirEntry, error)Tpl(text string, data any) (string, error)CreateFuncMap() template.FuncMapRenderTemplateToBuffer(s string, data ...any) (*bytes.Buffer, error)DisableInsecureFeaturesErrorerr stringError() stringFileRendererfs *filesystem.FileSystemContext *ContextData anyRenderTemplateFileToBuffer(file string) (*bytes.Buffer, error)RenderToBytes(path string) ([]byte, error)RenderTemplateContentToBuffer(content []byte) (*bytes.Buffer, error)RenderTemplateContentToString(content []byte) (string, error)MockvalClientctrl *gomock.Controllerrecorder *MockvalClientMockRecorderEXPECT() *MockvalClientMockRecorderEval(templatemap[string]any) (map[string]any, error)MockvalClientMockRecordermock *MockvalClientEval(arg0 any) *gomock.CallTextRendererRenderTemplateText(text string) (string, error)noValueErrormsg stringError() stringtemplateTextRendererContext *ContextData anyReadTextfunc(string) ([]byte, error)RenderTemplateText(text string) (string, error)ValuestplInfoname stringcontent stringvalClientEval(templatemap[string]any) (map[string]any, error)map[string]anyEncoderEncode( any) errorClose() error \ No newline at end of file