libuv-svace-build

Форк
0
/
make_dist_html.py 
122 строки · 2.6 Кб
1
#!/usr/bin/python3
2

3
import itertools
4
import os
5
import re
6
import subprocess
7

8
HTML = r'''
9
<!DOCTYPE html>
10
<html>
11
  <head>
12
    <link rel="stylesheet" href="http://libuv.org/styles/vendor.css">
13
    <link rel="stylesheet" href="http://libuv.org/styles/main.css">
14
    <style>
15
    table {{
16
      border-spacing: 0;
17
    }}
18
    body table {{
19
      margin: 0 0 0 12pt;
20
    }}
21
    th, td {{
22
      padding: 2pt;
23
      text-align: left;
24
      vertical-align: top;
25
    }}
26
    table table {{
27
      border-collapse: initial;
28
      padding: 0 0 16pt 0;
29
    }}
30
    table table tr:nth-child(even) {{
31
      background-color: #777;
32
    }}
33
    </style>
34
  </head>
35
  <body>
36
    <table>{groups}</table>
37
  </body>
38
</html>
39
'''
40

41
GROUPS = r'''
42
<tr>
43
  <td>{groups[0]}</td>
44
  <td>{groups[1]}</td>
45
  <td>{groups[2]}</td>
46
  <td>{groups[3]}</td>
47
</tr>
48
'''
49

50
GROUP = r'''
51
<table>
52
  <tr>
53
    <th>version</th>
54
    <th>tarball</th>
55
    <th>gpg</th>
56
    <th>windows</th>
57
  </tr>
58
  {rows}
59
</table>
60
'''
61

62
ROW = r'''
63
<tr>
64
  <td>
65
    <a href="http://dist.libuv.org/dist/{tag}/">{tag}</a>
66
  </td>
67
  <td>
68
    <a href="http://dist.libuv.org/dist/{tag}/libuv-{tag}.tar.gz">tarball</a>
69
  </td>
70
  <td>{maybe_gpg}</td>
71
  <td>{maybe_exe}</td>
72
</tr>
73
'''
74

75
GPG = r'''
76
<a href="http://dist.libuv.org/dist/{tag}/libuv-{tag}.tar.gz.sign">gpg</a>
77
'''
78

79
# The binaries don't have a predictable name, link to the directory instead.
80
EXE = r'''
81
<a href="http://dist.libuv.org/dist/{tag}/">exe</a>
82
'''
83

84
def version(tag):
85
  return list(map(int, re.match('^v(\d+)\.(\d+)\.(\d+)', tag).groups()))
86

87
def major_minor(tag):
88
  return version(tag)[:2]
89

90
def row_for(tag):
91
  maybe_gpg = ''
92
  maybe_exe = ''
93
  # We didn't start signing releases and producing Windows installers
94
  # until v1.7.0.
95
  if version(tag) >= version('v1.7.0'):
96
    maybe_gpg = GPG.format(**locals())
97
    maybe_exe = EXE.format(**locals())
98
  return ROW.format(**locals())
99

100
def group_for(tags):
101
  rows = ''.join(row_for(tag) for tag in tags)
102
  return GROUP.format(rows=rows)
103

104
# Partition in groups of |n|.
105
def groups_for(groups, n=4):
106
  html = ''
107
  groups = groups[:] + [''] * (n - 1)
108
  while len(groups) >= n:
109
    html += GROUPS.format(groups=groups)
110
    groups = groups[n:]
111
  return html
112

113
if __name__ == '__main__':
114
  os.chdir(os.path.dirname(__file__))
115
  tags = subprocess.check_output(['git', 'tag'], text=True)
116
  tags = [tag for tag in tags.split('\n') if tag.startswith('v')]
117
  tags.sort(key=version, reverse=True)
118
  groups = [group_for(list(g)) for _, g in itertools.groupby(tags, major_minor)]
119
  groups = groups_for(groups)
120
  html = HTML.format(groups=groups).strip()
121
  html = re.sub('>\\s+<', '><', html)
122
  print(html)
123

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.