| 481 | } |
| 482 | |
| 483 | func (m *Manager) upgradeExtensions(exts []*Extension, force bool) error { |
| 484 | var longestExt = slices.MaxFunc(exts, func(a, b *Extension) int { |
| 485 | return len(a.Name()) - len(b.Name()) |
| 486 | }) |
| 487 | var longestExtName = len(longestExt.Name()) |
| 488 | |
| 489 | var failed bool |
| 490 | for _, f := range exts { |
| 491 | fmt.Fprintf(m.io.Out, "[%*s]: ", longestExtName, f.Name()) |
| 492 | currentVersion := displayExtensionVersion(f, f.CurrentVersion()) |
| 493 | err := m.upgradeExtension(f, force) |
| 494 | if err != nil { |
| 495 | if !errors.Is(err, localExtensionUpgradeError) && |
| 496 | !errors.Is(err, upToDateError) && |
| 497 | !errors.Is(err, pinnedExtensionUpgradeError) { |
| 498 | failed = true |
| 499 | } |
| 500 | fmt.Fprintf(m.io.Out, "%s\n", err) |
| 501 | continue |
| 502 | } |
| 503 | latestVersion := displayExtensionVersion(f, f.LatestVersion()) |
| 504 | if m.dryRunMode { |
| 505 | fmt.Fprintf(m.io.Out, "would have upgraded from %s to %s\n", currentVersion, latestVersion) |
| 506 | } else { |
| 507 | fmt.Fprintf(m.io.Out, "upgraded from %s to %s\n", currentVersion, latestVersion) |
| 508 | } |
| 509 | } |
| 510 | if failed { |
| 511 | return errors.New("some extensions failed to upgrade") |
| 512 | } |
| 513 | return nil |
| 514 | } |
| 515 | |
| 516 | func (m *Manager) upgradeExtension(ext *Extension, force bool) error { |
| 517 | if ext.IsLocal() { |