diff options
Diffstat (limited to 'lib/rubygems/command_manager.rb')
-rw-r--r-- | lib/rubygems/command_manager.rb | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/rubygems/command_manager.rb b/lib/rubygems/command_manager.rb index 8d31d85b44..1bdbd50530 100644 --- a/lib/rubygems/command_manager.rb +++ b/lib/rubygems/command_manager.rb @@ -175,14 +175,20 @@ class Gem::CommandManager when "-v", "--version" then say Gem::VERSION terminate_interaction 0 + when "-C" then + args.shift + start_point = args.shift + if Dir.exist?(start_point) + Dir.chdir(start_point) { invoke_command(args, build_args) } + else + alert_error clean_text("#{start_point} isn't a directory.") + terminate_interaction 1 + end when /^-/ then alert_error clean_text("Invalid option: #{args.first}. See 'gem --help'.") terminate_interaction 1 else - cmd_name = args.shift.downcase - cmd = find_command cmd_name - cmd.deprecation_warning if cmd.deprecated? - cmd.invoke_with_build_args args, build_args + invoke_command(args, build_args) end end @@ -237,4 +243,11 @@ class Gem::CommandManager ui.backtrace e end end + + def invoke_command(args, build_args) + cmd_name = args.shift.downcase + cmd = find_command cmd_name + cmd.deprecation_warning if cmd.deprecated? + cmd.invoke_with_build_args args, build_args + end end |