mklog: Add --append option to auto add generate ChangeLog to patch file

This tiny patch add --append option to mklog.py that support add generated
change-log to the corresponding patch file. With this option there is no need
to manually copy the generated change-log to the patch file. e.g.:

Run `mklog.py --append /path/to/this/patch` will add the generated change-log
to the right place of the /path/to/this/patch file.

contrib/ChangeLog:

	* mklog.py: Add --append option.

Signed-off-by: Lehua Ding <lehua.ding@rivai.ai>
This commit is contained in:
Lehua Ding 2023-07-12 11:36:40 +08:00
parent f048af2aa3
commit 7f0700a689

View file

@ -358,6 +358,8 @@ if __name__ == '__main__':
'file')
parser.add_argument('--update-copyright', action='store_true',
help='Update copyright in ChangeLog files')
parser.add_argument('-a', '--append', action='store_true',
help='Append the generate ChangeLog to the patch file')
args = parser.parse_args()
if args.input == '-':
args.input = None
@ -370,7 +372,30 @@ if __name__ == '__main__':
else:
output = generate_changelog(data, args.no_functions,
args.fill_up_bug_titles, args.pr_numbers)
if args.changelog:
if args.append:
if (not args.input):
raise Exception("`-a or --append` option not support standard input")
lines = []
with open(args.input, 'r', newline='\n') as f:
# 1 -> not find the possible start of diff log
# 2 -> find the possible start of diff log
# 3 -> finish add ChangeLog to the patch file
maybe_diff_log = 1
for line in f:
if maybe_diff_log == 1 and line == "---\n":
maybe_diff_log = 2
elif maybe_diff_log == 2 and \
re.match("\s[^\s]+\s+\|\s\d+\s[+\-]+\n", line):
lines += [output, "---\n", line]
maybe_diff_log = 3
else:
# the possible start is not the true start.
if maybe_diff_log == 2:
maybe_diff_log = 1
lines.append(line)
with open(args.input, "w") as f:
f.writelines(lines)
elif args.changelog:
lines = open(args.changelog).read().split('\n')
start = list(takewhile(skip_line_in_changelog, lines))
end = lines[len(start):]