Mercurial > piecrust2
annotate util/generate_changelog.py @ 550:6f216c1ab6b1
bake: Add a flag to know which record entries got collapsed from last run.
This makes it possible to find entries for things that were actually baked
during the current run, as opposed to skipped because they were "clean".
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 04 Aug 2015 21:22:30 -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 |