MCPcopy Index your code
hub / github.com/cli/cli / Upgrade

Method Upgrade

pkg/cmd/extension/manager.go:454–480  ·  view source on GitHub ↗
(name string, force bool)

Source from the content-addressed store, hash-verified

452var noExtensionsInstalledError = errors.New("no extensions installed")
453
454func (m *Manager) Upgrade(name string, force bool) error {
455 // Fetch metadata during list only when upgrading all extensions.
456 // This is a performance improvement so that we don't make a
457 // bunch of unnecessary network requests when trying to upgrade a single extension.
458 fetchMetadata := name == ""
459 exts, _ := m.list(fetchMetadata)
460 if len(exts) == 0 {
461 return noExtensionsInstalledError
462 }
463 if name == "" {
464 return m.upgradeExtensions(exts, force)
465 }
466 for _, f := range exts {
467 if f.Name() != name {
468 continue
469 }
470 if f.IsLocal() {
471 return localExtensionUpgradeError
472 }
473 // For single extensions manually retrieve latest version since we forgo doing it during list.
474 if latestVersion := f.LatestVersion(); latestVersion == "" {
475 return fmt.Errorf("unable to retrieve latest version for extension %q", name)
476 }
477 return m.upgradeExtensions([]*Extension{f}, force)
478 }
479 return fmt.Errorf("no extension matched %q", name)
480}
481
482func (m *Manager) upgradeExtensions(exts []*Extension, force bool) error {
483 var longestExt = slices.MaxFunc(exts, func(a, b *Extension) int {

Callers

nothing calls this directly

Calls 6

listMethod · 0.95
upgradeExtensionsMethod · 0.95
NameMethod · 0.65
IsLocalMethod · 0.65
LatestVersionMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected