source: projects/web/trunk/bin/layout-errata.rb @ 1284

Revision 1284, 3.3 KB checked in by daisuke, 14 years ago (diff)

Initial import

Line 
1#!/usr/bin/ruby
2require 'erb'
3require 'rss'
4require '../../bin/rss_cdata.rb'
5require '../../bin/errataparser.rb'
6
7# Layout class
8class Layout
9  extend ERB::DefMethod
10  def_erb_method('layout', '../../template/layout-errata.html.erb')
11end
12
13#
14urlhead="http://www-new.vinelinux.org/"
15erratadir="./"
16tmpdir = '../../template/'
17
18header=File.open("../../template/header.tmpl")
19footer=File.open("../../template/footer.tmpl")
20
21curdir = File.basename(Dir.pwd)
22
23# Create rss object
24rss = RSS::Maker.make("1.0") do |maker|
25  maker.channel.about = "http://vinelinux.org/errata/#{curdir}/rss"
26  maker.channel.title = "Vine Linux #{curdir} エラッタ情報"
27  maker.channel.description = "Vine Linux #{curdir} のセキュリティ及びバグ更新情報です"
28  maker.channel.link = "http://vinelinux.org/errata/#{curdir}/"
29  maker.items.do_sort = true
30
31# create errata indexhtml contents
32errataindex = <<EOF
33<h1>Vine Linux #{curdir} のエラッタ情報</h1>
34<div class="errata">
35<table>
36  <tr>
37   <th>日付</th>
38   <th>内容</th>
39   <th>対象</th>
40  </tr>
41EOF
42
43# create all errata page
44Dir.open(erratadir) { |dir|
45 for filename in dir.grep(/.dat$/).sort.reverse
46  errata = ErrataParser.new IO.read(erratadir+filename)
47
48  # index content
49  errataindex += <<-EOF
50  <tr>
51   <td>[#{errata.item['date']}]</td>
52   <td><a href="/errata/#{curdir}/#{filename.gsub(/.dat/,".html")}">
53       #{errata.item['title']}</a></td>
54   <td>#{errata.item['target']}</td>
55  </tr>
56  EOF
57
58  # rss
59  rssitem = maker.items.new_item
60  rssitem.link = urlhead+"errata/#{curdir}/#{filename.gsub(/.dat/,".html")}"
61  rssitem.title = errata.item['title']
62  rssitem.date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
63  rssitem.dc_date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
64  rssitem.content_encoded = errata.item['info']
65
66  # errata page content
67  erratahtml = <<-EOF
68  <h1>[#{errata.item['date']}] #{errata.item['title']}</h1>
69  <div class="errata">
70  <dl>
71    <dt>対象 (Vine Linuxバージョン):</dt>
72    <dd><p>#{errata.item['target']}</p></dd>
73    <dt>内容:</dt>
74    <dd>#{errata.item['info']}</dd>
75    <dt>修正済パッケージ/ファイル:</dt>
76    <dd><pre>
77#{errata.item['update']}
78    </pre></dd>
79    <dt>入手先:</dt>
80    <dd>update-watch、synaptic または apt-get でアップグレードすることができます。
81    <pre>
82# apt-get update
83# apt-get upgrade
84    </pre>
85    該当するパッケージをインストールしていない場合は、
86    更新の必要はありません。<br />
87    また、各ミラーサイトの
88    <pre>
89#{errata.item['directory']}
90    </pre>
91    からも個別に入手することができます。
92    </dd>
93    <dt>関連URL:</dt>
94    <dd><ul>
95  EOF
96
97  errata.item['url'].each do |line|
98    erratahtml += "    <li><a href=\"#{line}\">#{line}</a></li>\n"
99  end
100
101  erratahtml += <<-EOF
102    </ul></dd>
103  </dl>
104  </div>
105  EOF
106
107  # wrtite errata page
108  template = ERB.new(erratahtml)
109  newfile = open(filename.gsub(/.dat/,".html"), "w")
110  newfile.puts Layout.new.layout { template.result }
111  newfile.close
112 end
113}
114
115errataindex += <<EOF
116</table>
117</div>
118EOF
119
120# write errata indexhtml
121template = ERB.new(errataindex)
122errataindexhtml = open("index.html", "w")
123errataindexhtml.puts Layout.new.layout { template.result }
124errataindexhtml.close
125
126end
127
128# write errata rss
129File.open("errata#{curdir}.rdf", "w") do |file|
130  file.puts rss.to_s
131end
Note: See TracBrowser for help on using the repository browser.