diff options
Diffstat (limited to 'lib/rubygems/commands')
-rw-r--r-- | lib/rubygems/commands/build_command.rb | 8 | ||||
-rw-r--r-- | lib/rubygems/commands/fetch_command.rb | 13 | ||||
-rw-r--r-- | lib/rubygems/commands/pristine_command.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/commands/setup_command.rb | 19 | ||||
-rw-r--r-- | lib/rubygems/commands/specification_command.rb | 26 |
5 files changed, 59 insertions, 13 deletions
diff --git a/lib/rubygems/commands/build_command.rb b/lib/rubygems/commands/build_command.rb index 572a5c36ec..36a6fe48f2 100644 --- a/lib/rubygems/commands/build_command.rb +++ b/lib/rubygems/commands/build_command.rb @@ -4,7 +4,11 @@ require 'rubygems/builder' class Gem::Commands::BuildCommand < Gem::Command def initialize - super('build', 'Build a gem from a gemspec') + super 'build', 'Build a gem from a gemspec' + + add_option '--force', 'skip validation of the spec' do |value, options| + options[:force] = true + end end def arguments # :nodoc: @@ -22,7 +26,7 @@ class Gem::Commands::BuildCommand < Gem::Command spec = load_gemspec gemspec if spec then - Gem::Builder.new(spec).build + Gem::Builder.new(spec).build options[:force] else alert_error "Error loading gemspec. Aborting." terminate_interaction 1 diff --git a/lib/rubygems/commands/fetch_command.rb b/lib/rubygems/commands/fetch_command.rb index 666d83e730..e7c9cc9525 100644 --- a/lib/rubygems/commands/fetch_command.rb +++ b/lib/rubygems/commands/fetch_command.rb @@ -13,6 +13,7 @@ class Gem::Commands::FetchCommand < Gem::Command add_bulk_threshold_option add_proxy_option add_source_option + add_clear_sources_option add_version_option add_platform_option @@ -58,8 +59,16 @@ class Gem::Commands::FetchCommand < Gem::Command next end - path = Gem::RemoteFetcher.fetcher.download spec, source_uri - FileUtils.mv path, File.basename(spec.cache_file) + file = "#{spec.full_name}.gem" + remote_path = URI.parse(source_uri) + "gems/#{file}" + + fetch = Gem::RemoteFetcher.fetcher + + gem = fetch.fetch_path remote_path.to_s + + File.open file, "wb" do |f| + f.write gem + end say "Downloaded #{spec.full_name}" end diff --git a/lib/rubygems/commands/pristine_command.rb b/lib/rubygems/commands/pristine_command.rb index 272a4dd18e..83e6cc7a67 100644 --- a/lib/rubygems/commands/pristine_command.rb +++ b/lib/rubygems/commands/pristine_command.rb @@ -94,10 +94,14 @@ extensions. end # TODO use installer options + install_defaults = Gem::ConfigFile::PLATFORM_DEFAULTS['install'] + installer_env_shebang = install_defaults.to_s['--env-shebang'] + installer = Gem::Installer.new(gem, :wrappers => true, :force => true, - :install_dir => spec.base_dir) + :install_dir => spec.base_dir, + :env_shebang => installer_env_shebang) installer.install say "Restored #{spec.full_name}" diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 52a3b88fe3..0c957393d9 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -252,9 +252,19 @@ TEXT end def make_destination_dirs(install_destdir) - lib_dir = nil - bin_dir = nil + lib_dir, bin_dir = Gem.default_rubygems_dirs + unless lib_dir + lib_dir, bin_dir = generate_default_dirs(install_destdir) + end + + mkdir_p lib_dir + mkdir_p bin_dir + + return lib_dir, bin_dir + end + + def generate_default_dirs(install_destdir) prefix = options[:prefix] site_or_vendor = options[:site_or_vendor] @@ -283,10 +293,7 @@ TEXT bin_dir = File.join install_destdir, bin_dir.gsub(/^[a-zA-Z]:/, '') end - mkdir_p lib_dir - mkdir_p bin_dir - - return lib_dir, bin_dir + [lib_dir, bin_dir] end def remove_old_bin_files(bin_dir) diff --git a/lib/rubygems/commands/specification_command.rb b/lib/rubygems/commands/specification_command.rb index 921fd519e9..566a9cc66e 100644 --- a/lib/rubygems/commands/specification_command.rb +++ b/lib/rubygems/commands/specification_command.rb @@ -62,7 +62,25 @@ FIELD name of gemspec field to show "Please specify a gem name or file on the command line" end - dep = Gem::Dependency.new gem, options[:version] + case options[:version] + when String + req = Gem::Requirement.parse options[:version] + when Gem::Requirement + req = options[:version] + else + raise Gem::CommandLineError, "Unsupported version type: #{options[:version]}" + end + + if !req.none? and options[:all] + alert_error "Specify --all or -v, not both" + terminate_interaction 1 + end + + if options[:all] + dep = Gem::Dependency.new gem + else + dep = Gem::Dependency.new gem, options[:version] + end field = get_one_optional_argument @@ -80,7 +98,11 @@ FIELD name of gemspec field to show end if remote? then - found = Gem::SpecFetcher.fetcher.fetch dep + found = Gem::SpecFetcher.fetcher.fetch dep, true + + if dep.prerelease? or options[:prerelease] + found += Gem::SpecFetcher.fetcher.fetch dep, false, true, true + end specs.push(*found.map { |spec,| spec }) end |