Skip to content

Instantly share code, notes, and snippets.

@jamiecobbett
Last active November 24, 2015 11:45
Show Gist options
  • Save jamiecobbett/7f6213d13d8b663d4c2b to your computer and use it in GitHub Desktop.
Save jamiecobbett/7f6213d13d8b663d4c2b to your computer and use it in GitHub Desktop.
Scan govuk app Gemfile.locks for a named gem dependency
require 'open-uri'
apps = %w{
asset-manager
bouncer
business-support-api
business-support-finder
calculators
calendars
collections
collections-api
collections-publisher
contacts-admin
contacts-frontend
content-planner
content-register
content-store
email-alert-api
email-alert-monitor
email-alert-service
feedback
finder-frontend
frontend
government-frontend
govuk_content_api
hmrc-manuals-api
imminence
info-frontend
kibana-gds
licence-finder
manuals-frontend
maslow
panopticon
policy-publisher
publisher
publishing-api
release
router-api
rummager
search-admin
short-url-manager
sidekiq-monitoring
signonotron2
smart-answers
specialist-frontend
specialist-publisher
static
support
support-api
transition
travel-advice-publisher
url-arbiter
whitehall
}
gem_name = ARGV[0] || raise("Must pass a gem name to scan for, eg nokogiri")
apps.each do |app_name|
begin
url = "https://raw.githubusercontent.com/alphagov/#{app_name}/master/Gemfile.lock"
lockfile = Bundler::LockfileParser.new(open(url).read)
matching_dependency = lockfile.specs.detect { |spec| spec.name == "nokogiri" }
if matching_dependency.nil?
puts "#{app_name},Didn't find a nokogiri dependency"
else
puts "#{app_name},#{matching_dependency.version}"
end
rescue => e
STDERR.puts "Error when processing #{app_name}: #{e}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment