summaryrefslogtreecommitdiff
path: root/ruby_2_2/lib/rubygems/commands/yank_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_2_2/lib/rubygems/commands/yank_command.rb')
-rw-r--r--ruby_2_2/lib/rubygems/commands/yank_command.rb107
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
-