Sha256: 00399c6bcb71a576a0508db56fa7ae56fb4c988d318f5ea888625977dc9d0e97

Contents?: true

Size: 1.35 KB

Versions: 24

Compression:

Stored size: 1.35 KB

Contents

class Dependencies::Repository

  def initialize(base)
    @paths = {
      :gems  => File.join(base),
      :bin   => File.join(base, 'bin'),
      :specs => File.join(base, 'specifications')
    }
  end

  def index
    @index ||= reload_index!
  end

  def reload_index!
    @index = ::Gem::SourceIndex.new.load_gems_in(@paths[:specs])
  end

  def gem(name, versions=[])
    ::Gem::Dependency.new(name, versions)
  end

  def search(gem)
    index.search(gem)
  end

  def install(gem)
    reload_index!
    return if index.search(gem).last
    
    installer = ::Gem::DependencyInstaller.new(
      :bin_dir => @paths[:bin],
      :install_dir => @paths[:gems],
      :user_install => false)

    begin
      installer.install gem.name, gem.version_requirements
    rescue ::Gem::GemNotFoundException => e
      puts "Cannot find #{gem.name} #{gem.version_requirements}"
    rescue ::Gem::RemoteFetcher::FetchError => e
      puts "Problem with fetch, retrying..."
      retry
    end
  end

  def uninstall(name, version)
    uninstaller = ::Gem::Uninstaller.new(name,
      :version => version,
      :bin_dir => @paths[:bin],
      :install_dir => @paths[:gems],
      :ignore => true,
      :executables => true
    )
    uninstaller.uninstall
  end
  
  def installed
    Dir[File.join(@paths[:gems], 'gems', '*')].map! { |n| File.basename(n) }
  end

  def gems
  end

end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
maccman-bowline-0.3.3 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.3.5 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.3.6 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.3.7 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.3.9 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.0 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.1 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.3 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.4 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.5 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.6 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.7 lib/bowline/dependencies/lib/dependencies/repository.rb
maccman-bowline-0.4.8 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.8 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.7 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.6 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.5 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.4 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.3 lib/bowline/dependencies/lib/dependencies/repository.rb
bowline-0.5.2 lib/bowline/dependencies/lib/dependencies/repository.rb