Skip to content

Commit fa12c4c

Browse files
rmartinez3mumoshu
authored andcommitted
feat: Capability to diff changes in chart hooks (#72)
Currently helm diff does not parse helm hooks. This appends hooks to the manifest diffs so that it can include them to be diff. Added capability to revision,upgrade and rollback. Resolves #46
1 parent 5abc7b2 commit fa12c4c

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

cmd/revision.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ func (d *revision) differentiate() error {
9898
}
9999

100100
diff.DiffManifests(
101-
manifest.Parse(revisionResponse.Release.Manifest, revisionResponse.Release.Namespace),
102-
manifest.Parse(releaseResponse.Release.Manifest, releaseResponse.Release.Namespace),
101+
manifest.ParseRelease(revisionResponse.Release),
102+
manifest.ParseRelease(releaseResponse.Release),
103103
d.suppressedKinds,
104104
d.outputContext,
105105
os.Stdout)
@@ -122,8 +122,8 @@ func (d *revision) differentiate() error {
122122
}
123123

124124
diff.DiffManifests(
125-
manifest.Parse(revisionResponse1.Release.Manifest, revisionResponse1.Release.Namespace),
126-
manifest.Parse(revisionResponse2.Release.Manifest, revisionResponse2.Release.Namespace),
125+
manifest.ParseRelease(revisionResponse1.Release),
126+
manifest.ParseRelease(revisionResponse2.Release),
127127
d.suppressedKinds,
128128
d.outputContext,
129129
os.Stdout)

cmd/rollback.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ func (d *rollback) backcast() error {
8989

9090
// create a diff between the current manifest and the version of the manifest that a user is intended to rollback
9191
diff.DiffManifests(
92-
manifest.Parse(releaseResponse.Release.Manifest, releaseResponse.Release.Namespace),
93-
manifest.Parse(revisionResponse.Release.Manifest, revisionResponse.Release.Namespace),
92+
manifest.ParseRelease(releaseResponse.Release),
93+
manifest.ParseRelease(revisionResponse.Release),
9494
d.suppressedKinds,
9595
d.outputContext,
9696
os.Stdout)

cmd/upgrade.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ func (d *diffCmd) run() error {
143143
return prettyError(err)
144144
}
145145

146-
currentSpecs = manifest.Parse(releaseResponse.Release.Manifest, releaseResponse.Release.Namespace)
147-
newSpecs = manifest.Parse(upgradeResponse.Release.Manifest, upgradeResponse.Release.Namespace)
146+
currentSpecs = manifest.ParseRelease(releaseResponse.Release)
147+
newSpecs = manifest.ParseRelease(upgradeResponse.Release)
148148
}
149149

150150
seenAnyChanges := diff.DiffManifests(currentSpecs, newSpecs, d.suppressedKinds, d.outputContext, os.Stdout)

manifest/parse.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strings"
99

1010
"gopkg.in/yaml.v2"
11+
"k8s.io/helm/pkg/proto/hapi/release"
1112
)
1213

1314
var yamlSeperator = []byte("\n---\n")
@@ -54,6 +55,16 @@ func splitSpec(token string) (string, string) {
5455
return "", ""
5556
}
5657

58+
func ParseRelease(release *release.Release) map[string]*MappingResult {
59+
manifest := release.Manifest
60+
for _, hook := range release.Hooks {
61+
manifest += "\n---\n"
62+
manifest += fmt.Sprintf("# Source: %s\n", hook.Path)
63+
manifest += hook.Manifest
64+
}
65+
return Parse(manifest, release.Namespace)
66+
}
67+
5768
func Parse(manifest string, defaultNamespace string) map[string]*MappingResult {
5869
scanner := bufio.NewScanner(strings.NewReader(manifest))
5970
scanner.Split(scanYamlSpecs)

0 commit comments

Comments
 (0)