class Kontena::PluginManager::Installer
Attributes
plugin_name[R]
pre[R]
version[RW]
Public Class Methods
new(plugin_name, pre: false, version: nil)
click to toggle source
Create a new instance of plugin installer @param plugin_name
[String] @param pre [Boolean] install a prerelease version if available @param version [String] install a specific version
# File lib/kontena/plugin_manager/installer.rb, line 17 def initialize(plugin_name, pre: false, version: nil) @plugin_name = plugin_name @pre = pre @version = version end
Public Instance Methods
available_upgrade()
click to toggle source
# File lib/kontena/plugin_manager/installer.rb, line 57 def available_upgrade installed = installed(plugin_name) return false unless installed pre = installed.version.prerelease? latest = rubygems_client.latest_version(prefix(plugin_name), pre: pre? || pre) if latest > installed.version latest.to_s end end
command()
click to toggle source
# File lib/kontena/plugin_manager/installer.rb, line 27 def command @command ||= Gem::DependencyInstaller.new( document: false, force: true, prerelease: pre, minimal_deps: true ) end
install()
click to toggle source
Install a plugin
# File lib/kontena/plugin_manager/installer.rb, line 37 def install return install_uri if plugin_name.include?('://') plugin_version = version.nil? ? Gem::Requirement.default : Gem::Requirement.new(version) command.install(prefix(plugin_name), plugin_version) command.installed_gems end
install_uri()
click to toggle source
# File lib/kontena/plugin_manager/installer.rb, line 44 def install_uri require 'tempfile' require 'open-uri' file = Tempfile.new(['kontena_plugin', '.gem']) open(plugin_name) do |input| file.write input.read file.close end self.class.new(file.path).install ensure file.unlink end
pre?()
click to toggle source
# File lib/kontena/plugin_manager/installer.rb, line 23 def pre? !!@pre end
upgrade()
click to toggle source
Upgrade an installed plugin
# File lib/kontena/plugin_manager/installer.rb, line 69 def upgrade return install if version upgrade_to = available_upgrade if upgrade_to Installer.new(plugin_name, version: upgrade_to).install end end