Skip to content

Instantly share code, notes, and snippets.

@boazsegev
Last active January 6, 2020 13:32
Show Gist options
  • Save boazsegev/205b870654e2074f2682 to your computer and use it in GitHub Desktop.
Save boazsegev/205b870654e2074f2682 to your computer and use it in GitHub Desktop.
Yank multiple versions of a single gem
#!/usr/bin/env ruby
# encoding: UTF-8
require'json'
def yank
gemname = (ARGV.index('-g') && ARGV[ARGV.index('-g') + 1]) || (puts('Please enter gem name:') || gets.strip)
data = JSON.parse `curl -s https://rubygems.org/api/v1/versions/#{gemname}.json`
versions = data.map {|v| v['number']} .reverse
puts "\n\n#{gemname} versions: #{versions.join ', '}"
puts "\nHow many versions to yank (starting at the first release) (none/ALL/number)?"
case (answer = gets.strip)
when /ALL/
puts "Yanking ALL versions!"
versions.each {|v| puts `gem yank #{gemname} -v #{v}` }
when /^[\-\d]+$/
versions = versions[0...answer.to_i]
puts "Yanking versions: #{versions.join ', '}"
versions.each {|v| puts `gem yank #{gemname} -v #{v}` }
else
puts "No action was performed"
end
end
yank
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment