aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb')
-rw-r--r--railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb108
1 files changed, 0 insertions, 108 deletions
diff --git a/railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb b/railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb
deleted file mode 100644
index 90de49d83d..0000000000
--- a/railties/lib/rails/vendor/bundler/lib/bundler/repository/gem_repository.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-module Bundler
- class Repository
- class Gems
- attr_reader :path, :bindir
-
- def initialize(path, bindir)
- @path = path
- @bindir = bindir
- end
-
- # Returns the source index for all gems installed in the
- # repository
- def source_index
- index = Gem::SourceIndex.from_gems_in(@path.join("specifications"))
- index.each { |n, spec| spec.loaded_from = @path.join("specifications", "#{spec.full_name}.gemspec") }
- index
- end
-
- def gems
- source_index.gems.values
- end
-
- # Checks whether a gem is installed
- def expand(options)
- cached_gems.each do |name, version|
- unless installed?(name, version)
- install_cached_gem(name, version, options)
- end
- end
- end
-
- def cleanup(gems)
- glob = gems.map { |g| g.full_name }.join(',')
- base = path.join("{cache,specifications,gems}")
-
- (Dir[base.join("*")] - Dir[base.join("{#{glob}}{.gemspec,.gem,}")]).each do |file|
- if File.basename(file) =~ /\.gem$/
- name = File.basename(file, '.gem')
- Bundler.logger.info "Deleting gem: #{name}"
- end
- FileUtils.rm_rf(file)
- end
- end
-
- def add_spec(spec)
- raise NotImplementedError
- end
-
- def download_path_for
- path
- end
-
- private
-
- def cache_path
- @path.join("cache")
- end
-
- def cache_files
- Dir[cache_path.join("*.gem")]
- end
-
- def cached_gems
- cache_files.map do |f|
- full_name = File.basename(f).gsub(/\.gem$/, '')
- full_name.split(/-(?=[^-]+$)/)
- end
- end
-
- def spec_path
- @path.join("specifications")
- end
-
- def spec_files
- Dir[spec_path.join("*.gemspec")]
- end
-
- def gem_path
- @path.join("gems")
- end
-
- def gem_paths
- Dir[gem_path.join("*")]
- end
-
- def installed?(name, version)
- spec_files.any? { |g| File.basename(g) == "#{name}-#{version}.gemspec" } &&
- gem_paths.any? { |g| File.basename(g) == "#{name}-#{version}" }
- end
-
- def install_cached_gem(name, version, options = {})
- cached_gem = cache_path.join("#{name}-#{version}.gem")
- # TODO: Add a warning if cached_gem is not a file
- if cached_gem.file?
- Bundler.logger.info "Installing #{name}-#{version}.gem"
- installer = Gem::Installer.new(cached_gem.to_s, options.merge(
- :install_dir => @path,
- :ignore_dependencies => true,
- :env_shebang => true,
- :wrappers => true,
- :bin_dir => @bindir
- ))
- installer.install
- end
- end
- end
- end
-end \ No newline at end of file