|
Packit |
b5b901 |
#!/usr/bin/python
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
from __future__ import print_function
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
import itertools
|
|
Packit |
b5b901 |
import os
|
|
Packit |
b5b901 |
import re
|
|
Packit |
b5b901 |
import subprocess
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
HTML = r'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
<html>
|
|
Packit |
b5b901 |
<head>
|
|
Packit |
b5b901 |
<link rel="stylesheet" href="http://libuv.org/styles/vendor.css">
|
|
Packit |
b5b901 |
<link rel="stylesheet" href="http://libuv.org/styles/main.css">
|
|
Packit |
b5b901 |
<style>
|
|
Packit |
b5b901 |
table {{
|
|
Packit |
b5b901 |
border-spacing: 0;
|
|
Packit |
b5b901 |
}}
|
|
Packit |
b5b901 |
body table {{
|
|
Packit |
b5b901 |
margin: 0 0 0 12pt;
|
|
Packit |
b5b901 |
}}
|
|
Packit |
b5b901 |
th, td {{
|
|
Packit |
b5b901 |
padding: 2pt;
|
|
Packit |
b5b901 |
text-align: left;
|
|
Packit |
b5b901 |
vertical-align: top;
|
|
Packit |
b5b901 |
}}
|
|
Packit |
b5b901 |
table table {{
|
|
Packit |
b5b901 |
border-collapse: initial;
|
|
Packit |
b5b901 |
padding: 0 0 16pt 0;
|
|
Packit |
b5b901 |
}}
|
|
Packit |
b5b901 |
table table tr:nth-child(even) {{
|
|
Packit |
b5b901 |
background-color: #777;
|
|
Packit |
b5b901 |
}}
|
|
Packit |
b5b901 |
</style>
|
|
Packit |
b5b901 |
</head>
|
|
Packit |
b5b901 |
<body>
|
|
Packit |
b5b901 |
{groups}
|
|
Packit |
b5b901 |
</body>
|
|
Packit |
b5b901 |
</html>
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
GROUPS = r'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
{groups[0]}
|
|
Packit |
b5b901 |
{groups[1]}
|
|
Packit |
b5b901 |
{groups[2]}
|
|
Packit |
b5b901 |
{groups[3]}
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
GROUP = r'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
version
|
|
Packit |
b5b901 |
tarball
|
|
Packit |
b5b901 |
gpg
|
|
Packit |
b5b901 |
windows
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
{rows}
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
ROW = r'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
{tag}
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
tarball
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
{maybe_gpg}
|
|
Packit |
b5b901 |
{maybe_exe}
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
GPG = r'''
|
|
Packit |
b5b901 |
gpg
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
# The binaries don't have a predictable name, link to the directory instead.
|
|
Packit |
b5b901 |
EXE = r'''
|
|
Packit |
b5b901 |
exe
|
|
Packit |
b5b901 |
'''
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
def version(tag):
|
|
Packit |
b5b901 |
return map(int, re.match('^v(\d+)\.(\d+)\.(\d+)', tag).groups())
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
def major_minor(tag):
|
|
Packit |
b5b901 |
return version(tag)[:2]
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
def row_for(tag):
|
|
Packit |
b5b901 |
maybe_gpg = ''
|
|
Packit |
b5b901 |
maybe_exe = ''
|
|
Packit |
b5b901 |
# We didn't start signing releases and producing Windows installers
|
|
Packit |
b5b901 |
# until v1.7.0.
|
|
Packit |
b5b901 |
if version(tag) >= version('v1.7.0'):
|
|
Packit |
b5b901 |
maybe_gpg = GPG.format(**locals())
|
|
Packit |
b5b901 |
maybe_exe = EXE.format(**locals())
|
|
Packit |
b5b901 |
return ROW.format(**locals())
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
def group_for(tags):
|
|
Packit |
b5b901 |
rows = ''.join(row_for(tag) for tag in tags)
|
|
Packit |
b5b901 |
return GROUP.format(rows=rows)
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
# Partition in groups of |n|.
|
|
Packit |
b5b901 |
def groups_for(groups, n=4):
|
|
Packit |
b5b901 |
html = ''
|
|
Packit |
b5b901 |
groups = groups[:] + [''] * (n - 1)
|
|
Packit |
b5b901 |
while len(groups) >= n:
|
|
Packit |
b5b901 |
html += GROUPS.format(groups=groups)
|
|
Packit |
b5b901 |
groups = groups[n:]
|
|
Packit |
b5b901 |
return html
|
|
Packit |
b5b901 |
|
|
Packit |
b5b901 |
if __name__ == '__main__':
|
|
Packit |
b5b901 |
os.chdir(os.path.dirname(__file__))
|
|
Packit |
b5b901 |
tags = subprocess.check_output(['git', 'tag'])
|
|
Packit |
b5b901 |
tags = [tag for tag in tags.split('\n') if tag.startswith('v')]
|
|
Packit |
b5b901 |
tags.sort(key=version, reverse=True)
|
|
Packit |
b5b901 |
groups = [group_for(list(g)) for _, g in itertools.groupby(tags, major_minor)]
|
|
Packit |
b5b901 |
groups = groups_for(groups)
|
|
Packit |
b5b901 |
html = HTML.format(groups=groups).strip()
|
|
Packit |
b5b901 |
html = re.sub('>\\s+<', '><', html)
|
|
Packit |
b5b901 |
print(html)
|