Module: Hoe::Deps

### Home Classes Methods

### In Files

- lib/hoe/deps.rb

### Methods

- #define_deps_tasks
- #dependent_upon
- #get_gems_by_name
- #get_latest_gems
- #get_source_index
- #install_missing_plugins

### Files

- History.txt
- Manifest.txt

### Class/Module Index

Quicksearch

- Hoe
- Hoe::Clean
- Hoe::Compiler
- Hoe::Debug
- Hoe::Deps
- Hoe::Flay
- Hoe::Flog
- Hoe::GemPreludeSucks
- Hoe::Gemcutter
- Hoe::Inline
- Hoe::Newb
- Hoe::Package
- Hoe::Publish
- Hoe::RCov
- Hoe::Racc
- Hoe::RubyForge
- Hoe::Signing
- Hoe::Test
- Rake
- Rake::Task
- Rake::TaskManager
- File
- Object
- String

No matching classes.

# Hoe::Deps

Deps plugin for hoe.

### Tasks Provided:

check_extra_deps | Install missing dependencies.
deps:email | Print a contact list for gems dependent on this gem
deps:fetch | Fetch all the dependent gems of this gem into tarballs
deps:list | List all the dependent gems of this gem

### Constants

GEMURL

  The main rubygems repository.

### Public Instance Methods

define_deps_tasks() click to toggle source

Define tasks for plugin.

    # File lib/hoe/deps.rb, line 23
    def define_deps_tasks
      namespace :deps do
        desc "List all the dependent gems of this gem"
        task :list do
          deps_list_task
        end

        desc "Print a contact list for gems dependent on this gem"
        task :email do
          deps_email_task
        end

        desc "Fetch all the dependent gems of this gem into tarballs"
        task :fetch do
          deps_fetch_task
        end
      end

      desc 'Install missing dependencies.'
      task :check_extra_deps do
        check_extra_deps_task
      end

      desc 'Install missing plugins.'
      task :install_plugins do
        install_missing_plugins
      end
    end

dependent_upon(name) click to toggle source

Return all the dependencies on the named rubygem.

    # File lib/hoe/deps.rb, line 217
    def dependent_upon name
      get_latest_gems.find_all { |gem|
        gem.dependencies.any? { |dep| dep.name == name }
      }
    end

get_gems_by_name() click to toggle source

Return a hash of the latest rubygems keyed by name.

    # File lib/hoe/deps.rb, line 188
    def get_gems_by_name
      @@by_name ||= Hash[*get_latest_gems.map { |gem|
                           [gem.name, gem, gem.full_name, gem]
                         }.flatten]
    end

get_latest_gems() click to toggle source

Return the latest rubygems.

    # File lib/hoe/deps.rb, line 181
    def get_latest_gems
      @@cache ||= Hash[*get_source_index.flatten].values
    end

get_source_index() click to toggle source

Return the rubygems source index.

    # File lib/hoe/deps.rb, line 148
    def get_source_index
      @@index ||= nil

      return @@index if @@index

      dump = unless File.exist? '.source_index' then
               warn "Fetching full index and caching. This can take a while."
               url = GEMURL + "Marshal.#{Gem.marshal_version}.Z"
               dump = Gem::RemoteFetcher.fetcher.fetch_path url
               dump = Gem.inflate dump

               warn "stripping index to latest gems"
               ary = Marshal.load dump

               h = {}
               Hash[ary].values.sort.each { |spec| h[spec.name] = spec }
               ary = h.map { |k,v| [v.full_name, v] }

               dump = Marshal.dump ary

               open '.source_index', 'wb' do |io| io.write dump end

               dump
             else
               open '.source_index', 'rb' do |io| io.read end
             end

      @@index = Marshal.load dump
    end

install_missing_plugins(plugins = Hoe.bad_plugins) click to toggle source

Installs plugins that aren't currently installed

    # File lib/hoe/deps.rb, line 197
    def install_missing_plugins plugins = Hoe.bad_plugins
      version = '>= 0'

      plugins.each do |name|
        dash_name = name.to_s.gsub '_', '-'

        next if have_gem?("hoe-#{name}") or
                  have_gem?(name) or
                  have_gem?(dash_name)

        install_gem("hoe-#{name}", version, false) or
          install_gem(name, version, false) or
          install_gem(dash_name, version, false) or
          warn "could not install gem for #{name} plugin"
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.