dev-support/munge-table.rb (40 lines of code) (raw):

#!/usr/bin/env ruby # # To run this, first install nokogiri: "gem install nokogiri" require 'pp' require 'set' require 'rubygems' require 'nokogiri' require 'open-uri' NAMESPACE = 'http://maven.apache.org/POM/4.0.0' doc = Nokogiri::XML(open("pom.xml")) profile_to_symbols = {} symbol_to_profiles = {} all_profile_ids = [] profiles = doc.xpath('//x:project/x:profiles/x:profile', 'x' => NAMESPACE) profiles.each do |profile| munge_symbols = profile.xpath('x:properties/x:munge.symbols', 'x' => NAMESPACE) profile_id = profile.xpath('x:id', 'x' => NAMESPACE).text all_profile_ids << profile_id munge_symbols.text.split(',').each do |munge_symbol| profile_to_symbols[profile_id] ||= Set.new profile_to_symbols[profile_id] << munge_symbol symbol_to_profiles[munge_symbol] ||= Set.new symbol_to_profiles[munge_symbol] << profile_id end end max_length = symbol_to_profiles.keys.map { |x| x.length }.max puts " " * (max_length+2) + all_profile_ids.join(' | ') symbol_to_profiles.each_pair do |munge_symbol, profile_ids| print "%-#{max_length}s |" % munge_symbol all_profile_ids.each do |check_profile_id| half_length = check_profile_id.length / 2 space = " " * half_length print space if profile_ids.include?(check_profile_id) print "x" else print " " end print " " if check_profile_id.length.odd? print "#{space}| " end puts "" end