#!/usr/bin/env ruby

# @(#) generate outline listing of a POM file showing target section order

require 'nokogiri'

# target order
ORDER=%w(
    modelVersion
    parent
    groupId
    artifactId
    version
    packaging
    name
    description
    url
    inceptionYear
    organization
    licenses
    properties
    mailingLists
    prerequisites
    modules
    scm
    issueManagement
    ciManagement
    distributionManagement
    dependencyManagement
    dependencies
    repositories
    pluginRepositories
    build
    reporting
    profiles
    developers
    contributors
)

doc = Nokogiri::XML(ARGF) do |config|
  config.options = Nokogiri::XML::ParseOptions::NOBLANKS
end

lasti = 0
j=0

doc.root.children.each do |child|
    n = child.name
    next if n == 'comment'
    i = ORDER.index(n)
    unless i
    puts n
    next
    end
    m = ''
    if i < lasti
        m=' ?'
        j+=1 
    end
    puts "%2d #{n}%s" % [i, m]
    lasti = i
end
puts "Found #{j} errors"
