summaryrefslogtreecommitdiff
blob: 169af73cca390694202730074b8f3b073981ddb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/ruby
#
#
#


require "rexml/document"

userxml = REXML::Document.new File.new( "/home/bangert/gentoo/gentoo/xml/htdocs/proj/en/devrel/roll-call/userinfo.xml" )
developers = Hash::new(false)
userxml.elements.each("userlist/user") { |e|
	dev = e.attributes["username"].strip.downcase
	if e.elements["status"] && e.elements["status"].text == "retired"
		developers[dev] = false
	else
		developers[dev] = true
	end
}

# takes a REXML::Document and checks project/dev elements against second
# argument hash
#
class ProjectChecker
	def self.checkDevs rexml, developers, prefix
		rexml.elements.each("project/dev") { |dev|
			developer = dev.text.strip.downcase
			if !developers.has_key?(developer)
				puts prefix + ": unknown developer: #{developer}"
			elsif !developers[developer]
			        puts prefix + ": retired devloper: #{developer}"
			end
		}
	end

	def self.recursiveFullCheck developers 
		self.recursiveFullCheckWorker "/home/bangert/gentoo/gentoo/xml/htdocs/proj/en/metastructure/gentoo.xml" ,developers
	end

	def self.recursiveFullCheckWorker xmlfile, developers
		projectxml = REXML::Document.new File.new( xmlfile )
		name = projectxml.elements["project/name"].text
		
		ProjectChecker.checkDevs(projectxml, developers, name)
		projectxml.elements.each("project/subproject") { |project|
			projectfile = "/home/bangert/gentoo/gentoo/xml/htdocs" +  project.attribute("ref").to_s
			if (File.exists? projectfile) 
				self.recursiveFullCheckWorker projectfile, developers
			else
				#puts "ERROR: File not found: " + projectfile 
				puts "Project \"#{name}\" does not habe this subproject reference: " + project.attribute("ref").to_s
			end
		}
	end


end

ProjectChecker.recursiveFullCheck developers