Sha256: 49f814455a4141770d3d7e06cffe6f17fa820d8091f1f9c679a9d67153cc10f2

Contents?: true

Size: 1.66 KB

Versions: 19

Compression:

Stored size: 1.66 KB

Contents

require 'kontena/plugin_manager/common'
require 'rubygems/dependency_installer'
require 'rubygems/requirement'

module Kontena
  module PluginManager
    class Installer
      include Common

      attr_reader :plugin_name, :pre, :version

      # 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
      def initialize(plugin_name, pre: false, version: nil)
        @plugin_name = plugin_name
        @pre = pre
        @version = version
      end

      def command
        @command ||= Gem::DependencyInstaller.new(
          document: false,
          force: true,
          prerelease: pre,
          minimal_deps: true
        )
      end

      # Install a plugin
      def install
        plugin_version = version.nil? ? Gem::Requirement.default : Gem::Requirement.new(version)
        command.install(prefix(plugin_name), plugin_version)
        command.installed_gems
      end

      # Upgrade an installed plugin
      # @param plugin_name [String]
      # @param pre [Boolean] upgrade to a prerelease version if available. Will happen always when the installed version is a prerelease version.
      def upgrade
        return install if version
        installed = installed(plugin_name)
        pre = installed.version.prerelease?

        raise "Plugin #{plugin_name} not installed" unless installed
        latest = rubygems_client.latest_version(prefix(plugin_name), pre: pre)
        if latest > installed.version
          Installer.new(plugin_name, version: latest.to_s).install
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
kontena-cli-1.4.3 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.3.rc1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.2 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.2.rc1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.2.pre1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.1.rc1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.1.pre1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.rc2 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.rc1 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre14 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre13 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre12 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre11 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre10 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre9 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre8 lib/kontena/plugin_manager/installer.rb
kontena-cli-1.4.0.pre7 lib/kontena/plugin_manager/installer.rb