MCPcopy Create free account
hub / github.com/cli/cli / upgradeExtension

Method upgradeExtension

pkg/cmd/extension/manager.go:516–545  ·  view source on GitHub ↗
(ext *Extension, force bool)

Source from the content-addressed store, hash-verified

514}
515
516func (m *Manager) upgradeExtension(ext *Extension, force bool) error {
517 if ext.IsLocal() {
518 return localExtensionUpgradeError
519 }
520 if !force && ext.IsPinned() {
521 return pinnedExtensionUpgradeError
522 }
523 if !ext.UpdateAvailable() {
524 return upToDateError
525 }
526 var err error
527 if ext.IsBinary() {
528 err = m.upgradeBinExtension(ext)
529 } else {
530 // Check if git extension has changed to a binary extension
531 var isBin bool
532 repo, repoErr := repoFromPath(m.gitClient, filepath.Join(ext.Path(), ".."))
533 if repoErr == nil {
534 isBin, _ = isBinExtension(m.client, repo)
535 }
536 if isBin {
537 if err := m.Remove(ext.Name()); err != nil {
538 return fmt.Errorf("failed to migrate to new precompiled extension format: %w", err)
539 }
540 return m.installBin(repo, "")
541 }
542 err = m.upgradeGitExtension(ext, force)
543 }
544 return err
545}
546
547func (m *Manager) upgradeGitExtension(ext *Extension, force bool) error {
548 if m.dryRunMode {

Calls 14

upgradeBinExtensionMethod · 0.95
RemoveMethod · 0.95
installBinMethod · 0.95
upgradeGitExtensionMethod · 0.95
repoFromPathFunction · 0.85
isBinExtensionFunction · 0.85
JoinMethod · 0.80
IsLocalMethod · 0.65
IsPinnedMethod · 0.65
UpdateAvailableMethod · 0.65
IsBinaryMethod · 0.65
PathMethod · 0.65