blob: 853889e132ac7a541b4175e82d6fbdccb9367047 [file] [log] [blame]
#!/usr/bin/env ruby
PAGETITLE = "Incubator/Podling crosscheck" # Wvisible:incubator
$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'json'
require 'whimsy/asf'
require 'wunderbar'
require 'wunderbar/bootstrap'
def get_data(defaults: {})
return {
"Sample data processing here" => "row 1",
"This could come from a file" => "row B"
}
end
_html do
_body? do
_whimsy_body(
title: PAGETITLE,
related: {
"/committers/tools" => "Whimsy Tool Listing",
"https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" => "Incubator Logo, to show that graphics can appear",
"https://community.apache.org/" => "Get Community Help",
"https://github.com/apache/whimsy/blob/master/www#{ENV['SCRIPT_NAME']}" => "See This Source Code"
},
helpblock: -> {
_p! do
_ 'This script cross-checks '
_a 'Incubator PMC lists in LDAP',
href: '../../roster/committee/incubator'
_ ', '
_a 'mentor lists in podlings.xml',
href: 'https://svn.apache.org/repos/asf/incubator/public/trunk/content/podlings.xml'
_ ', and '
_a 'Podling lists in LDAP',
href: '../../roster/ppmc'
_ '.'
end
}
) do
ASF.init_ldap
ipmc = ASF::Project.find('incubator').owners
incubator = ASF::Project.find('incubator').members
podlings = ASF::Podling.current.map {|podling| podling.id}
podling_committers = ASF::Project.preload.
select {|project, members| podlings.include? project.name}.
map {|project,members| project.members}.flatten.uniq
#
### Podling mentors vs IPMC
#
_whimsy_panel_table(
title: "Podling Mentors that are not IPMC members",
) do
_table.table.table_hover.table_striped do
_thead_ do
_tr do
_th 'Podling'
_th 'Mentor'
end
_tbody do
ASF::Podling.list.each do |podling|
next unless podling.status == 'current'
mentors = podling.mentors.map {|id| ASF::Person.find(id)}
orphans = podling.members - incubator
unless orphans.empty?
orphans.each do |person|
if
podling.mentors.include? person.id
then
_tr_ do
_td do
_a podling.display_name,
href: "../../roster/ppmc/#{podling.id}"
end
_td do
if person.asf_member?
_b do
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
else
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
end
end
end
end
end
end
end
end
end
end
#
### PPMC committers vs incubator committers
#
_whimsy_panel_table(
title: "Podling Committers that are not Incubator committers",
) do
_table.table.table_hover.table_striped do
_thead_ do
_tr do
_th 'Podling'
_th 'Committer'
end
_tbody do
ASF::Podling.list.each do |podling|
next unless podling.status == 'current'
mentors = podling.mentors.map {|id| ASF::Person.find(id)}
orphans = podling.members - incubator
unless orphans.empty?
orphans.each do |person|
if
not podling.mentors.include? person.id
then
_tr_ do
_td do
_a podling.display_name,
href: "../../roster/ppmc/#{podling.id}"
end
_td do
if person.asf_member?
_b do
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
else
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
end
end
end
end
end
end
end
end
end
end
#
### Incubator committers vs Podling committers
#
_whimsy_panel_table(
title: "Incubator committers that are not on the IPMC and are not
listed as a committer of any podling"
) do
_table.table.table_hover.table_striped do
_thead_ do
_tr do
_th 'Committer'
end
_tbody do
incubator.sort_by {|person| person.public_name}.each do |person|
next if ipmc.include? person
next if podling_committers.include? person
_tr_ do
_td do
if person.asf_member?
_b do
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
else
_a person.public_name,
href: "../../roster/committer/#{person.id}"
end
end
end
end
end
end
end
end
end
end
end