File: linkify_changelog.py

package info (click to toggle)
python-boltons 25.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,236 kB
  • sloc: python: 12,133; makefile: 159; sh: 7
file content (54 lines) | stat: -rw-r--r-- 1,310 bytes parent folder | download
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
import re
import sys

BASE_RTD_URL = 'http://boltons.readthedocs.org/en/latest/'
BASE_ISSUES_URL = 'https://github.com/mahmoud/boltons/issues/'

_issues_re = re.compile(r'#(\d+)')
_member_re = re.compile(r'((\w+utils)\.[a-zA-Z0-9_.]+)')

URL_MAP = {}

def sub_member_match(match):
    full_name = match.group(1)
    mod_name = match.group(2)
    url = BASE_RTD_URL + mod_name + '.html#boltons.' + full_name
    ret = f'[{full_name}][{full_name}]'
    URL_MAP[full_name] = url
    # print ret
    return ret


def sub_issue_match(match):
    link_text = match.group(0)
    issue_num = match.group(1)
    link_target = 'i%s' % issue_num
    link_url = BASE_ISSUES_URL + issue_num
    ret = f'[{link_text}][{link_target}]'
    URL_MAP[link_target] = link_url
    # print ret
    return ret


def main():
    try:
        cl_filename = sys.argv[1]
    except IndexError:
        cl_filename = 'CHANGELOG.md'
    cl_text = open(cl_filename).read().decode('utf-8')
    ret = _member_re.sub(sub_member_match, cl_text)
    ret = _issues_re.sub(sub_issue_match, ret)

    link_map_lines = []
    for (name, url) in sorted(URL_MAP.items()):
        link_map_lines.append(f'[{name}]: {url}')

    print(ret)
    print()
    print()
    print('\n'.join(link_map_lines))
    print()


if __name__ == '__main__':
    main()