Sha256: 55169a4bf11e4a8827b9d35529030b8b7a5a347063d13ccf6c7e116dd181d506

Contents?: true

Size: 1.75 KB

Versions: 52

Compression:

Stored size: 1.75 KB

Contents

class Jeweler
  module Commands
    class CheckDependencies
      class MissingDependenciesError < RuntimeError
        attr_accessor :dependencies, :type
      end

      attr_accessor :gemspec, :type

      def run
        missing_dependencies = find_missing_dependencies

        if missing_dependencies.empty?
          puts "#{type || 'All'} dependencies seem to be installed."
        else
          puts "Missing some dependencies. Install them with the following commands:"
          missing_dependencies.each do |dependency|
            puts %Q{\tgem install #{dependency.name} --version "#{dependency.requirement.to_s}"}
          end

          abort "Run the specified gem commands before trying to run this again: #{$0} #{ARGV.join(' ')}"
        end
      end

      def find_missing_dependencies
        if Gem::Specification.respond_to?(:find_by_name)
          dependencies.select do |dependency|
            begin
              spec = Gem::Specification.find_by_name(dependency.name, *dependency.requirement.as_list)
              spec.activate if spec
              !spec
            rescue LoadError => e
              true
            end
          end
        else
          dependencies.select do |dependency|
            begin
              Gem.activate dependency.name, *dependency.requirement.as_list
              false
            rescue LoadError => e
              true
            end
          end
        end
      end

      def dependencies
        case type
        when :runtime, :development
          gemspec.send("#{type}_dependencies")
        else
          gemspec.dependencies
        end
      end

      def self.build_for(jeweler)
        command = new

        command.gemspec = jeweler.gemspec

        command
      end
    end
  end
end

Version data entries

52 entries across 52 versions & 5 rubygems

Version Path
jeweler-2.1.1 lib/jeweler/commands/check_dependencies.rb
jeweler-2.0.1 lib/jeweler/commands/check_dependencies.rb
jeweler-2.0.0 lib/jeweler/commands/check_dependencies.rb
jeweler-1.8.8 lib/jeweler/commands/check_dependencies.rb
jeweler-1.8.7 lib/jeweler/commands/check_dependencies.rb
jeweler-1.8.6 lib/jeweler/commands/check_dependencies.rb
jeweler-1.8.5 lib/jeweler/commands/check_dependencies.rb
devise_sociable-0.1.0 vendor/bundle/gems/jeweler-1.8.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.7.3 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.7.2 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.7.1 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.7.0 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.7 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.6 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.5 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.4 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.3 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.2 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb
jeweler-1.8.4 lib/jeweler/commands/check_dependencies.rb
dirty_history-0.6.1 dirty_history/ruby/1.9.1/gems/jeweler-1.6.4/lib/jeweler/commands/check_dependencies.rb