(isUpgrade bool)
| 184 | } |
| 185 | |
| 186 | func (d *diffCmd) template(isUpgrade bool) ([]byte, error) { |
| 187 | flags := []string{} |
| 188 | if d.devel { |
| 189 | flags = append(flags, "--devel") |
| 190 | } |
| 191 | if d.noHooks && !d.useUpgradeDryRun { |
| 192 | flags = append(flags, "--no-hooks") |
| 193 | } |
| 194 | if d.includeCRDs { |
| 195 | flags = append(flags, "--include-crds") |
| 196 | } |
| 197 | if d.chartVersion != "" { |
| 198 | flags = append(flags, "--version", d.chartVersion) |
| 199 | } |
| 200 | if d.chartRepo != "" { |
| 201 | flags = append(flags, "--repo", d.chartRepo) |
| 202 | } |
| 203 | if d.namespace != "" { |
| 204 | flags = append(flags, "--namespace", d.namespace) |
| 205 | } |
| 206 | if d.kubeContext != "" { |
| 207 | flags = append(flags, "--kube-context", d.kubeContext) |
| 208 | } |
| 209 | if d.postRenderer != "" { |
| 210 | flags = append(flags, "--post-renderer", d.postRenderer) |
| 211 | } |
| 212 | for _, arg := range d.postRendererArgs { |
| 213 | flags = append(flags, "--post-renderer-args", arg) |
| 214 | } |
| 215 | if d.insecureSkipTLSVerify { |
| 216 | flags = append(flags, "--insecure-skip-tls-verify") |
| 217 | } |
| 218 | // Helm automatically enable --reuse-values when there's no --set, --set-string, --set-json, --set-values, --set-file present. |
| 219 | // Let's simulate that in helm-diff. |
| 220 | // See https://medium.com/@kcatstack/understand-helm-upgrade-flags-reset-values-reuse-values-6e58ac8f127e |
| 221 | shouldDefaultReusingValues := isUpgrade && len(d.values) == 0 && len(d.stringValues) == 0 && len(d.stringLiteralValues) == 0 && len(d.jsonValues) == 0 && len(d.valueFiles) == 0 && len(d.fileValues) == 0 |
| 222 | if (d.reuseValues || d.resetThenReuseValues || shouldDefaultReusingValues) && !d.resetValues && d.clusterAccessAllowed() { |
| 223 | tmpfile, err := os.CreateTemp("", "existing-values") |
| 224 | if err != nil { |
| 225 | return nil, err |
| 226 | } |
| 227 | defer func() { |
| 228 | _ = os.Remove(tmpfile.Name()) |
| 229 | }() |
| 230 | // In the presence of --reuse-values (or --reset-values), --reset-then-reuse-values is ignored. |
| 231 | if d.resetThenReuseValues && !d.reuseValues { |
| 232 | var supported bool |
| 233 | supported, err = isHelmVersionAtLeast(minHelmVersionWithResetThenReuseValues) |
| 234 | if err != nil { |
| 235 | return nil, err |
| 236 | } |
| 237 | if !supported { |
| 238 | return nil, fmt.Errorf("Using --reset-then-reuse-values requires at least helm version %s", minHelmVersionWithResetThenReuseValues.String()) |
| 239 | } |
| 240 | err = d.writeExistingValues(tmpfile, false) |
| 241 | } else { |
| 242 | err = d.writeExistingValues(tmpfile, true) |
| 243 | } |
no test coverage detected