/
postrender.go
46 lines (40 loc) · 1.17 KB
/
postrender.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package helmrender
import (
"bytes"
v2 "github.com/fluxcd/helm-controller/api/v2beta1"
"helm.sh/helm/v3/pkg/postrender"
)
type combinedPostRenderer struct {
renderers []postrender.PostRenderer
}
func newCombinedPostRenderer() combinedPostRenderer {
return combinedPostRenderer{
renderers: make([]postrender.PostRenderer, 0),
}
}
func (c *combinedPostRenderer) addRenderer(renderer postrender.PostRenderer) {
c.renderers = append(c.renderers, renderer)
}
func (c *combinedPostRenderer) Run(renderedManifests *bytes.Buffer) (modifiedManifests *bytes.Buffer, err error) {
var result *bytes.Buffer = renderedManifests
for _, renderer := range c.renderers {
result, err = renderer.Run(result)
if err != nil {
return nil, err
}
}
return result, nil
}
func postRenderers(hr v2.HelmRelease) (postrender.PostRenderer, error) {
var combinedRenderer = newCombinedPostRenderer()
for _, r := range hr.Spec.PostRenderers {
if r.Kustomize != nil {
combinedRenderer.addRenderer(newPostRendererKustomize(r.Kustomize))
}
}
combinedRenderer.addRenderer(newPostRendererOriginLabels(&hr))
if len(combinedRenderer.renderers) == 0 {
return nil, nil
}
return &combinedRenderer, nil
}