Add uml diagrams as reference for original implementation complexity
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
		
							parent
							
								
									4aa54423b6
								
							
						
					
					
						commit
						3cc8acb31a
					
				|  | @ -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 | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 137 KiB | 
|  | @ -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 | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 43 KiB | 
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 958 KiB | 
		Loading…
	
		Reference in New Issue