Created
March 13, 2017 17:43
-
-
Save tas50/f1bb4d5afabaf57aa598762187608930 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require "net/http" | |
require "json" | |
require "date" | |
def cookbooks | |
uri = URI("https://supermarket.chef.io/api/v1/users/chef") | |
response = Net::HTTP.get(uri) | |
JSON.parse(response)["cookbooks"]["owns"].keys | |
end | |
def versions(cb_name) | |
uri = URI("https://supermarket.chef.io/api/v1/cookbooks/#{cb_name}") | |
response = Net::HTTP.get(uri) | |
JSON.parse(response)["versions"].map! { |x| x.split("/")[-1] } | |
end | |
def cb_version_publish_date(cb, version) | |
uri = URI("https://supermarket.chef.io/api/v1/cookbooks/#{cb}/versions/#{version}") | |
response = Net::HTTP.get(uri) | |
DateTime.parse(JSON.parse(response)["published_at"]) | |
end | |
if ARGV.empty? | |
puts "You must pass the date in format similar to 2017-01-01" | |
exit! | |
end | |
since_date = DateTime.parse(ARGV.first) | |
releases = [] | |
cookbooks.each do |cb| | |
versions(cb).each do |version| | |
puts "Checking #{cb} version #{version}" | |
if cb_version_publish_date(cb, version) >= since_date | |
releases << { cb => version } | |
else | |
break | |
end | |
end | |
end | |
puts "\nThere have been #{releases.count} releases since #{since_date}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment