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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
import email.utils
import os.path
import time
plugins_release = '1.5'
mib_release = '1.0.1'
page = {
"description": "Standard plugins for Nagios and compatible monitoring solutions.",
"keywords": "Nagios, Icinga, Shinken, Monitoring, Official, Plugins, Open, Source, Free, Software"
}
release_notes = 'doc/release-notes/' + plugins_release.replace('.', '-') + '.html'
_RSS = """<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>%s</title>
<link>%s</link>
<description>%s</description>
<language>en-us</language>
<webMaster>webmaster@nagios-plugins.org</webMaster>
<pubDate>%s</pubDate>
<lastBuildDate>%s</lastBuildDate>
<generator>Poole</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
%s
</channel>
</rss>
"""
_RSS_ITEM = """
<item>
<title>%s</title>
<link>%s</link>
<description>%s</description>
<guid>%s</guid>
<pubDate>%s</pubDate>
</item>
"""
def hook_postconvert_rss():
items = []
posts = [p for p in pages if 'post' in p]
posts.sort(key=lambda p: p.date, reverse=True)
for p in posts:
title = p.post
link = '%s/%s' % (options.base_url.rstrip('/'), p.url)
desc = hx(p.html)
date = time.mktime(time.strptime('%s 12' % p.date, '%Y-%m-%d %H'))
date = email.utils.formatdate(date)
items.append(_RSS_ITEM % (title, link, desc, date, link))
items = ''.join(items)
title = 'Nagios Plugins'
link = '%s/news/index.html' % options.base_url.rstrip('/')
desc = 'Announcements published by the Nagios Plugins Development Team.'
date = email.utils.formatdate()
rss = _RSS % (title, link, desc, date, date, items)
fp = open(os.path.join(output, 'rss.xml'), 'w')
fp.write(rss)
fp.close()
def list_posts(max_posts=-1):
posts = [p for p in pages if 'post' in p]
posts.sort(key=lambda p: p.date, reverse=True)
if max_posts == -1:
max_posts = len(posts)
for p in posts[:max_posts]:
date = time.strftime('%B %d, %Y', time.strptime(p['date'], '%Y-%m-%d'))
print '* **[%s](%s)** (%s)' % (p.post, p.url, date)
def list_kids():
kids = [(p.url, p.title) for p in pages if p.get('parent') == page.title]
for kid in sorted(kids):
print('* [%s](%s)' % (kid[1], kid[0]))
def menu():
menu_pages = [p for p in pages if 'menu-position' in p]
menu_pages.sort(key=lambda p: int(p['menu-position']))
for p in menu_pages:
if p.title == page.title:
print('<span id="current">%s</span>' % hx(p.title))
else:
print('<span><a href="%s">%s</a></span>' % (p.url, hx(p.title)))
def breadcrumb():
stable = '<span id="release">Stable release: <a href="%s">%s</a></span>' \
% (release_notes, plugins_release)
parents = {p.title: (p.url, p.get('parent')) for p in pages}
title = page.title
crumbs = hx(title)
while parents[title][1] is not None:
title = parents[title][1]
url = parents[title][0]
crumbs = '<a href="%s">%s</a> » %s' % (url, hx(title), crumbs)
if crumbs == hx(page.title):
crumbs = ' ' + stable
return crumbs
def copyright_years(since=None):
this_year = time.gmtime().tm_year
if since is not None and int(since) != this_year:
return str(since) + '–' + str(this_year)
else:
return str(this_year)
# vim:set expandtab softtabstop=4 shiftwidth=4 textwidth=80:
|