func updatePlugins() { plugins := PluginNamesNotSymlinked() if len(plugins) == 0 { return } Err("Updating plugins... ") packages, err := gode.OutdatedPackages(plugins...) PrintError(err, true) if len(packages) > 0 { for name, version := range packages { lockPlugin(name) PrintError(gode.InstallPackages(name+"@"+version), true) plugin, err := ParsePlugin(name) PrintError(err, true) AddPluginsToCache(plugin) unlockPlugin(name) } Errf("done. Updated %d %s.\n", len(packages), plural("package", len(packages))) } else { Errln("no plugins to update.") } }
func installPlugins(names ...string) error { for _, name := range names { lockPlugin(name) } defer func() { for _, name := range names { unlockPlugin(name) } }() err := gode.InstallPackages(names...) if err != nil { return err } plugins := make([]*Plugin, 0, len(names)) for _, name := range names { plugin, err := ParsePlugin(name) if err != nil { return err } plugins = append(plugins, plugin) } AddPluginsToCache(plugins...) return nil }