(r *Run, c DiffConfigProvider)
| 1464 | } |
| 1465 | |
| 1466 | func (a *App) diff(r *Run, c DiffConfigProvider) (*string, bool, bool, []error) { |
| 1467 | st := r.state |
| 1468 | |
| 1469 | selectedReleases, deduplicatedReleases, err := a.getSelectedReleases(r, false) |
| 1470 | if err != nil { |
| 1471 | return nil, false, false, []error{err} |
| 1472 | } |
| 1473 | |
| 1474 | if len(selectedReleases) == 0 { |
| 1475 | return nil, false, false, nil |
| 1476 | } |
| 1477 | |
| 1478 | r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...) |
| 1479 | |
| 1480 | opts := &state.DiffOpts{ |
| 1481 | Context: c.Context(), |
| 1482 | Output: c.DiffOutput(), |
| 1483 | NoColor: c.NoColor(), |
| 1484 | Set: c.Set(), |
| 1485 | SkipDiffOnInstall: c.SkipDiffOnInstall(), |
| 1486 | } |
| 1487 | |
| 1488 | st.Releases = deduplicatedReleases |
| 1489 | |
| 1490 | plan, err := st.PlanReleases(state.PlanOptions{Reverse: false, SelectedReleases: selectedReleases, SkipNeeds: c.SkipNeeds(), IncludeNeeds: c.IncludeNeeds(), IncludeTransitiveNeeds: false}) |
| 1491 | if err != nil { |
| 1492 | return nil, false, false, []error{err} |
| 1493 | } |
| 1494 | |
| 1495 | var toDiffWithNeeds []state.ReleaseSpec |
| 1496 | |
| 1497 | for _, rs := range plan { |
| 1498 | for _, r := range rs { |
| 1499 | toDiffWithNeeds = append(toDiffWithNeeds, r.ReleaseSpec) |
| 1500 | } |
| 1501 | } |
| 1502 | |
| 1503 | // Diff only targeted releases |
| 1504 | |
| 1505 | st.Releases = toDiffWithNeeds |
| 1506 | |
| 1507 | filtered := &Run{ |
| 1508 | state: st, |
| 1509 | helm: r.helm, |
| 1510 | ctx: r.ctx, |
| 1511 | Ask: r.Ask, |
| 1512 | } |
| 1513 | |
| 1514 | infoMsg, updated, deleted, errs := filtered.diff(true, c.DetailedExitcode(), c, opts) |
| 1515 | |
| 1516 | return infoMsg, true, len(deleted) > 0 || len(updated) > 0, errs |
| 1517 | } |
| 1518 | |
| 1519 | func (a *App) lint(r *Run, c LintConfigProvider) (bool, []error, []error) { |
| 1520 | st := r.state |
no test coverage detected