diff options
Diffstat (limited to 'ruby_2_2/lib/rubygems/commands/yank_command.rb')
-rw-r--r-- | ruby_2_2/lib/rubygems/commands/yank_command.rb | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/ruby_2_2/lib/rubygems/commands/yank_command.rb b/ruby_2_2/lib/rubygems/commands/yank_command.rb deleted file mode 100644 index 3c7859e763..0000000000 --- a/ruby_2_2/lib/rubygems/commands/yank_command.rb +++ /dev/null @@ -1,107 +0,0 @@ -require 'rubygems/command' -require 'rubygems/local_remote_options' -require 'rubygems/version_option' -require 'rubygems/gemcutter_utilities' - -class Gem::Commands::YankCommand < Gem::Command - include Gem::LocalRemoteOptions - include Gem::VersionOption - include Gem::GemcutterUtilities - - def description # :nodoc: - <<-EOF -The yank command removes a gem you pushed to a server from the server's -index. - -Note that if you push a gem to rubygems.org the yank command does not -prevent other people from downloading the gem via the download link. - -Once you have pushed a gem several downloads will happen automatically -via the webhooks. If you accidentally pushed passwords or other sensitive -data you will need to change them immediately and yank your gem. - -If you are yanking a gem due to intellectual property reasons contact -http://help.rubygems.org for permanant removal. Be sure to mention this -as the reason for the removal request. - EOF - end - - def arguments # :nodoc: - "GEM name of gem" - end - - def usage # :nodoc: - "#{program_name} GEM -v VERSION [-p PLATFORM] [--undo] [--key KEY_NAME]" - end - - def initialize - super 'yank', 'Remove a pushed gem from the index' - - add_version_option("remove") - add_platform_option("remove") - - add_option('--undo') do |value, options| - options[:undo] = true - end - - add_key_option - end - - def execute - sign_in - - version = get_version_from_requirements(options[:version]) - platform = get_platform_from_requirements(options) - - if version then - if options[:undo] then - unyank_gem(version, platform) - else - yank_gem(version, platform) - end - else - say "A version argument is required: #{usage}" - terminate_interaction - end - end - - def yank_gem(version, platform) - say "Yanking gem from #{self.host}..." - yank_api_request(:delete, version, platform, "api/v1/gems/yank") - end - - def unyank_gem(version, platform) - say "Unyanking gem from #{host}..." - yank_api_request(:put, version, platform, "api/v1/gems/unyank") - end - - private - - def yank_api_request(method, version, platform, api) - name = get_one_gem_name - response = rubygems_api_request(method, api) do |request| - request.add_field("Authorization", api_key) - - data = { - 'gem_name' => name, - 'version' => version, - } - data['platform'] = platform if platform - - request.set_form_data data - end - say response.body - end - - def get_version_from_requirements(requirements) - requirements.requirements.first[1].version - rescue - nil - end - - def get_platform_from_requirements(requirements) - Gem.platforms[1].to_s if requirements.key? :added_platform - end - -end - |