(r *Run, purge bool, c DestroyConfigProvider)
| 1387 | } |
| 1388 | |
| 1389 | func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error) { |
| 1390 | st := r.state |
| 1391 | helm := r.helm |
| 1392 | |
| 1393 | affectedReleases := state.AffectedReleases{} |
| 1394 | |
| 1395 | toSync, _, err := a.getSelectedReleases(r, false) |
| 1396 | if err != nil { |
| 1397 | return false, []error{err} |
| 1398 | } |
| 1399 | if len(toSync) == 0 { |
| 1400 | return false, nil |
| 1401 | } |
| 1402 | |
| 1403 | toDelete, err := st.DetectReleasesToBeDeleted(helm, toSync) |
| 1404 | if err != nil { |
| 1405 | return false, []error{err} |
| 1406 | } |
| 1407 | |
| 1408 | releasesToDelete := map[string]state.ReleaseSpec{} |
| 1409 | for _, r := range toDelete { |
| 1410 | release := r |
| 1411 | id := state.ReleaseToID(&release) |
| 1412 | releasesToDelete[id] = release |
| 1413 | } |
| 1414 | |
| 1415 | releasesWithNoChange := map[string]state.ReleaseSpec{} |
| 1416 | for _, r := range toSync { |
| 1417 | release := r |
| 1418 | id := state.ReleaseToID(&release) |
| 1419 | _, uninstalled := releasesToDelete[id] |
| 1420 | if !uninstalled { |
| 1421 | releasesWithNoChange[id] = release |
| 1422 | } |
| 1423 | } |
| 1424 | |
| 1425 | for id := range releasesWithNoChange { |
| 1426 | r := releasesWithNoChange[id] |
| 1427 | if _, err := st.TriggerCleanupEvent(&r, "delete"); err != nil { |
| 1428 | a.Logger.Warnf("warn: %v\n", err) |
| 1429 | } |
| 1430 | } |
| 1431 | |
| 1432 | names := make([]string, len(toSync)) |
| 1433 | for i, r := range toSync { |
| 1434 | names[i] = fmt.Sprintf(" %s (%s)", r.Name, r.Chart) |
| 1435 | } |
| 1436 | |
| 1437 | st.Releases = st.GetReleasesWithOverrides() |
| 1438 | |
| 1439 | var errs []error |
| 1440 | |
| 1441 | msg := fmt.Sprintf(`Affected releases are: |
| 1442 | %s |
| 1443 | |
| 1444 | Do you really want to delete? |
| 1445 | Helmfile will delete all your releases, as shown above. |
| 1446 |
no test coverage detected