157 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| @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
 |