Sha256: fde49d51698604b2e0a51b2f7fb8ee3408aab8cb1584136cc97c945a6e229198

Contents?: true

Size: 1.71 KB

Versions: 32

Compression:

Stored size: 1.71 KB

Contents

require "juicer/command/util"
require "cmdparse"
require "pathname"

module Juicer
  module Command
    # Installs a third party library so Juicer can use it.
    #
    class Install < CmdParse::Command
      include Juicer::Command::Util

      # Initializes command
      #
      def initialize(io = nil)
        super('install', false, true)
        @io = io || Logger.new(STDOUT)
        @version = nil
        @path = Juicer.home
        self.short_desc = "Install a third party library"
        self.description = <<-EOF
Installs a third party used by Juicer. Downloads necessary binaries and licenses
into Juicer installation directory, usually ~/.juicer
        EOF

        self.options = CmdParse::OptionParserWrapper.new do |opt|
          opt.on('-v', '--version [VERSION]', 'Specify version of library to install') { |version| @version = version }
        end
      end

      # Execute command
      #
      def execute(*args)
        args.flatten!

        if args.length == 0
          raise ArgumentError.new('Please provide a library to install')
        end

        args.each do |lib|
          installer = Juicer::Install.get(lib).new(@path)
          path = File.join(installer.install_dir, installer.path)
          version = version(installer)

          if installer.installed?(version)
            @io.info "#{installer.name} #{version} is already installed in #{path}"
            break
          end

          installer.install(version)
          @io.info "Successfully installed #{lib.camel_case} #{version} in #{path}" if installer.installed?(version)
        end
      end

      # Returns which version to install
      #
      def version(installer)
        @version ||= installer.latest
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 3 rubygems

Version Path
juicer-1.2.0 lib/juicer/command/install.rb
juicer-1.1.2 lib/juicer/command/install.rb
juicer-1.1.1 lib/juicer/command/install.rb
juicer-1.1.0 lib/juicer/command/install.rb
juicer-1.0.22 lib/juicer/command/install.rb
juicer-1.0.21 lib/juicer/command/install.rb
juicer-1.0.20 lib/juicer/command/install.rb
juicer-1.0.19 lib/juicer/command/install.rb
juicer-1.0.18 lib/juicer/command/install.rb
juicer-1.0.17 lib/juicer/command/install.rb
juicer-1.0.16 lib/juicer/command/install.rb
juicer-1.0.15 lib/juicer/command/install.rb
juicer-1.0.14 lib/juicer/command/install.rb
juicer-1.0.13 lib/juicer/command/install.rb
psyho_juicer-1.0.11 lib/juicer/command/install.rb
juicer-1.0.12 lib/juicer/command/install.rb
juicer-1.0.11 lib/juicer/command/install.rb
juicer-1.0.10 lib/juicer/command/install.rb
psyho_juicer-1.0.9 lib/juicer/command/install.rb
juicer-1.0.9 lib/juicer/command/install.rb