Mercurial > piecrust2
annotate util/generate_changelog.py @ 567:a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Tue, 13 Oct 2015 22:46:05 -0700 |
| parents | 9a00e694b42c |
| children | 442cf576ae25 |
| rev | line source |
|---|---|
|
544
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import os |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import os.path |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 import re |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 import sys |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 import subprocess |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 hg_log_template = ("{if(tags, '>>{tags};{date|shortdate}\n')}" |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 "{desc|firstline}\n\n") |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 re_add_tag_changeset = re.compile('^Added tag [^\s]+ for changeset [\w\d]+$') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 re_merge_pr_changeset = re.compile('^Merge pull request') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 re_tag = re.compile('^\d+\.\d+\.\d+([ab]\d+)?(rc\d+)?$') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 re_change = re.compile('^(\w+):') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 re_clean_code_span = re.compile('([^\s])``([^\s]+)') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 category_commands = [ |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 'chef', 'bake', 'find', 'help', 'import', 'init', 'paths', 'plugin', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 'plugins', 'prepare', 'purge', 'root', 'routes', 'serve', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 'showconfig', 'showrecord', 'sources', 'theme', 'themes'] |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 category_core = [ |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 'internal', 'bug', 'templating', 'formatting', 'performance', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 'data', 'config', 'rendering', 'render', 'debug', 'reporting', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 'linker', 'pagination', 'routing', 'caching'] |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 category_project = ['build', 'cm', 'docs', 'tests', 'setup'] |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 categories = [ |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 ('commands', category_commands), |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 ('core', category_core), |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 ('project', category_project), |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 ('miscellaneous', None)] |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 category_names = list(map(lambda i: i[0], categories)) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 def generate(): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 out_file = 'CHANGELOG.rst' |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 if len(sys.argv) > 1: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 out_file = sys.argv[1] |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 print("Generating %s" % out_file) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 if not os.path.exists('.hg'): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 raise Exception("You must run this script from the root of a " |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 "Mercurial clone of the PieCrust repository.") |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 hglog = subprocess.check_output([ |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
45 'hg', 'log', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 '--rev', 'reverse(::master)', |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
47 '--template', hg_log_template]) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 hglog = hglog.decode('utf8') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 templates = _get_templates() |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 with open(out_file, 'w') as fp: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 fp.write(templates['header']) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 skip = False |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 in_desc = False |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 current_version = 0 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 current_version_info = None |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 current_changes = None |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 for line in hglog.splitlines(): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 if line == '': |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 skip = False |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 in_desc = False |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
65 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
66 if not in_desc and line.startswith('>>'): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
67 tags, tag_date = line[2:].split(';') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
68 if re_tag.match(tags): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
69 if current_version > 0: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
70 _write_version_changes( |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
71 templates, |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
72 current_version, current_version_info, |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
73 current_changes, fp) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 current_version += 1 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
76 current_version_info = tags, tag_date |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
77 current_changes = {} |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 in_desc = True |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
79 else: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
80 skip = True |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
81 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
82 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
83 if skip or current_version == 0: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
84 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
85 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
86 if re_add_tag_changeset.match(line): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
87 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
88 if re_merge_pr_changeset.match(line): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
89 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
90 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
91 m = re_change.match(line) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
92 if m: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
93 ch_type = m.group(1) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
94 for cat_name, ch_types in categories: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
95 if ch_types is None or ch_type in ch_types: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
96 msgs = current_changes.setdefault(cat_name, []) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
97 msgs.append(line) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
98 break |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
99 else: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
100 assert False, ("Change '%s' should have gone in the " |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
101 "misc. bucket." % line) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
102 else: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
103 msgs = current_changes.setdefault('miscellaneous', []) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
104 msgs.append(line) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
105 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
106 if current_version > 0: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
107 _write_version_changes( |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
108 templates, |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
109 current_version, current_version_info, |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
110 current_changes, fp) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
111 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
112 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
113 def _write_version_changes(templates, version, version_info, changes, fp): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
114 tokens = { |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
115 'num': str(version), |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
116 'version': version_info[0], |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
117 'date': version_info[1]} |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
118 tpl = _multi_replace(templates['version_title'], tokens) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
119 fp.write(tpl) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
120 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
121 for i, cat_name in enumerate(category_names): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
122 msgs = changes.get(cat_name) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
123 if not msgs: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
124 continue |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
125 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
126 tokens = { |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
127 'sub_num': str(i), |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
128 'category': cat_name.title()} |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
129 tpl = _multi_replace(templates['category_title'], tokens) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
130 fp.write(tpl) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
131 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
132 for msg in msgs: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
133 msg = msg.replace('`', '``').rstrip('\n') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
134 msg = re_clean_code_span.sub(r'\1`` \2', msg) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
135 fp.write('* ' + msg + '\n') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
136 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
137 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
138 def _multi_replace(s, tokens): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
139 for token in tokens: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
140 s = s.replace('%%%s%%' % token, tokens[token]) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
141 return s |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
142 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
143 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
144 def _get_templates(): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
145 tpl_dir = os.path.join(os.path.dirname(__file__), 'changelog') |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
146 tpls = {} |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
147 for name in os.listdir(tpl_dir): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
148 tpl = _get_template(os.path.join(tpl_dir, name)) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
149 name_no_ext, _ = os.path.splitext(name) |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
150 tpls[name_no_ext] = tpl |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
151 return tpls |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
152 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
153 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
154 def _get_template(filename): |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
155 with open(filename, 'r', encoding='utf8') as fp: |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
156 return fp.read() |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
157 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
158 |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
159 if __name__ == '__main__': |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
160 generate() |
|
9a00e694b42c
cm: Changelog generator script.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
161 |
