7 def build_used_package_list(source_files)
8 source_files.map do |source_file|
9 File.read(source_file).split("\n").reject do |l|
10 l.strip.start_with?('#') or l.strip == ""
16 :full => build_used_package_list(['grml-live/etc/grml/fai/config/package_config/GRMLBASE', 'grml-live/etc/grml/fai/config/package_config/GRML_FULL']),
19 def build_package_list(packages, used)
21 packages.each do |pkg|
22 next if not File.exists?(File.join(pkg, 'debian'))
24 g = Git.open(working_dir = pkg)
25 #g.pull(Git::Repo, Git::Branch) # fetch and a merge
27 g = Git.bare(working_dir = pkg)
30 current_head = g.gcommit('HEAD')
31 next if not current_head.parent
34 :head_is_tagged => false,
41 p[:used][dist] = l.include?(pkg)
44 for tag in g.tags.reverse
46 t = g.gcommit(tag.name)
48 #$stderr.puts "#{pkg}: Checking tag #{tag.name}: tag parent: #{t.parent.sha} HEAD: #{current_head.parent.sha}"
49 if t.parent.sha === current_head.parent.sha
50 p[:head_is_tagged] = true
51 p[:version] = tag.name
58 data.values.sort { |x,y| x[:name] <=> y[:name] }
61 packages = build_package_list(ARGV, used_packages)
63 template = ERB.new <<-EOF
66 <meta charset="utf-8">
67 <title>Grml.org Package Index</title>
68 <link rel="stylesheet" href="style.css">
72 <h1>All Grml packages</h1>
73 <p>Last update: <%= Time.now.to_s %></p>
78 <th>Package</th><th>Git</th><th>Download</th><th>Fresh?</th><th>In FULL?</th>
80 <% packages.each do |p| %>
82 <td><%= p[:name] %></td>
83 <td class="git"><a href="http://git.grml.org/?p=<%= p[:name] %>.git;a=summary">Git</a></td>
86 <a href="http://deb.grml.org/pool/main/<%= p[:name][0..0] %>/<%= p[:name] %>/">Download</a>
89 <% if p[:head_is_tagged] %>
90 <td class="ok">Version <%= p[:version] %></td>
92 <td class="error <% if p[:used][:full] %>important<% end %>">Untagged changes</td>
94 <td class="installed"><%= p[:used][:full] ? "Yes" : "No" %></td>
104 File.open('index.html.new','w') do |f|
105 f.write template.result(binding)
107 File.open('packages.yaml.new','w') do |f|
108 f.write packages.to_yaml
111 FileUtils.mv 'index.html.new', 'index.html'
112 FileUtils.mv 'packages.yaml.new', 'packages.yaml'