Feature Summary
Migrate all three deployers (helm, argocd, argocd-helm) to the deployer.Deployer interface introduced in #527. Have the bundler accept the interface for mockability instead of constructing concrete generators.
Problem/Use Case
PR #527 introduced deployer.Deployer interface and deployer.Output in pkg/bundler/deployer/deployer.go, but only argocdhelm implements it. The helm and argocd deployers still use their own GeneratorInput/GeneratorOutput types and are called directly from bundler.go via concrete methods (makeHelmBundle, makeArgoCD).
This means:
- Bundler tests can't mock deployers — they must exercise real file I/O
- Each deployer has its own output type despite identical fields
- The
shared/ sub-package could be consolidated into deployer/
Proposed Solution
- Migrate
helm.Generator and argocd.Generator to the "Generator IS the input" pattern (configure struct, call Generate(ctx, outputDir))
- Have all three implement
deployer.Deployer
- Refactor
bundler.go routing to accept deployer.Deployer instead of calling concrete methods
- Consolidate
pkg/bundler/deployer/shared/ utilities into pkg/bundler/deployer/
Component
Bundlers
Priority
Nice to have (improves codebase quality)
Related
Feature Summary
Migrate all three deployers (
helm,argocd,argocd-helm) to thedeployer.Deployerinterface introduced in #527. Have the bundler accept the interface for mockability instead of constructing concrete generators.Problem/Use Case
PR #527 introduced
deployer.Deployerinterface anddeployer.Outputinpkg/bundler/deployer/deployer.go, but onlyargocdhelmimplements it. Thehelmandargocddeployers still use their ownGeneratorInput/GeneratorOutputtypes and are called directly frombundler.govia concrete methods (makeHelmBundle,makeArgoCD).This means:
shared/sub-package could be consolidated intodeployer/Proposed Solution
helm.Generatorandargocd.Generatorto the "Generator IS the input" pattern (configure struct, callGenerate(ctx, outputDir))deployer.Deployerbundler.gorouting to acceptdeployer.Deployerinstead of calling concrete methodspkg/bundler/deployer/shared/utilities intopkg/bundler/deployer/Component
Bundlers
Priority
Nice to have (improves codebase quality)
Related