Skip to content

Instantly share code, notes, and snippets.

@samonzeweb
Last active December 6, 2018 14:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samonzeweb/1ed1498e901ce79d054e0116ec70c113 to your computer and use it in GitHub Desktop.
Save samonzeweb/1ed1498e901ce79d054e0116ec70c113 to your computer and use it in GitHub Desktop.
Extract and display nuget packages dependencies
#! /usr/bin/env ruby
# Parse all NuGet packages under the package directory and print
# all packages names followeb by its dependencies. The format
# is not pretty, but useful combined with 'grep'.
require 'zip' # rubyzip
require 'rexml/document'
Dir.glob("packages/**/*.nupkg").each do |nupkg|
Zip::File.open(nupkg) do |zip|
zip.each do |entry|
if /.nuspec$/.match(entry.name)
xml_content = REXML::Document.new(entry.get_input_stream.read)
xml_root = xml_content.root
meta = xml_root.get_elements('//package/metadata').first
id = meta.get_elements('id').first.text
version = meta.get_elements('version').first.text
package_description = "#{id} (#{version})"
xml_root.each_element('//dependency') do |dep|
puts "#{package_description} : #{dep['id']} (#{dep['version']})"
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment