deskflow/CI/deb_changelog.py
Nick Bolton ed4680264a
Apply markdown formatting to ChangeLog (#7285)
* Apply markdown formatting to ChangeLog

* Make CI change notes platform agnostic
2023-09-26 12:41:34 +01:00

42 lines
1.9 KiB
Python

from argparse import ArgumentParser
from datetime import datetime, timezone
import re
IGNORE_SEGMENTS = ['CI changes:']
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('name', type=str, help='Name of the package')
parser.add_argument('version', type=str, help='Version of the package')
parser.add_argument('-d', '--distribution', type=str, default='unstable', help='Distribution the package is built for')
parser.add_argument('-u', '--urgency', type=str, default='low', help='Urgency of the package')
args = parser.parse_args()
build_time = datetime.now(timezone.utc).strftime('%a, %d %b %Y %H:%M:%S %z') # day-of-week, dd month yyyy hh:mm:ss +zzzz
version_str = re.match('^\d+\.\d+\.\d+', args.version).group(0)
with open('ChangeLog', 'r', encoding='utf8') as in_file, open('debian/changelog', 'w+', encoding='utf8') as out_file:
out_file.write('{} ({}) {}; urgency={}\n'.format(args.name, args.version, args.distribution, args.urgency))
in_section = False
ignore_segment = False
line = in_file.readline()
while line:
if line.startswith('v'):
if line.startswith('v{}'.format(version_str)):
in_section = True
elif in_section:
break
elif not in_section:
# skip this line and read in the next
pass
elif line.strip().replace('=', '') == '':
ignore_segment = False
elif line.strip() in IGNORE_SEGMENTS:
ignore_segment = True
elif line.strip().endswith(':'):
out_file.write('\n * {}'.format(line.strip()[:-1]))
else:
if in_section and not ignore_segment:
while line.startswith(('#', '|', '-')):
line = ' '.join(line.split()[1:])
out_file.write('\n - {}'.format(line))
line = in_file.readline()
out_file.write('\n\n -- Symless <engineering@symless.com> {}\n'.format(build_time))