Doc: Port make-authors-short to Python3.

Port the script that creates AUTHORS-SHORT to Python3.
Ping #18152.
This commit is contained in:
Gerald Combs 2022-06-23 13:09:30 -07:00
parent 602e87d6c5
commit d3e2f1053b
3 changed files with 52 additions and 42 deletions

View File

@ -11,12 +11,12 @@ find_package( Asciidoctor 1.5 )
add_custom_command(
OUTPUT AUTHORS-SHORT
COMMAND ${PERL_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/make-authors-short.pl
COMMAND ${PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/make-authors-short.py
< ${CMAKE_SOURCE_DIR}/AUTHORS
> ${CMAKE_CURRENT_BINARY_DIR}/AUTHORS-SHORT
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/make-authors-short.pl
${CMAKE_CURRENT_SOURCE_DIR}/make-authors-short.py
${CMAKE_SOURCE_DIR}/AUTHORS
)

View File

@ -1,39 +0,0 @@
# Remove tasks from individual author entries from AUTHORS file
# for use in the about dialog.
#
# Copyright 2004 Ulf Lamping <ulf.lamping@web.de>
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
use strict;
use open qw(:std :utf8);
my $subinfo=0;
my $nextline;
$_ = <>;
s/\xef\xbb\xbf//; # Skip UTF-8 byte order mark
print unless /^\n/;
while (<>) {
if (/(.*?)\s*\{/) {
$subinfo = 1;
print "$1\n";
} elsif (/\}/) {
$subinfo = 0;
if (($nextline = <>) !~ /^[\s]*$/) {
print STDERR "No blank line after '}', found: $nextline"
if $nextline =~ m/\{/;
print $nextline;
}
} elsif ($subinfo == 1) {
next;
} else {
print;
}
}

49
doc/make-authors-short.py Executable file
View File

@ -0,0 +1,49 @@
#!/usr/bin/env python3
#
# Generate the AUTHORS-SHORT file.
# Ported from make-authors-short.pl, copyright 2004 Ulf Lamping <ulf.lamping@web.de>
#
# By Gerald Combs <gerald@wireshark.org
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
'''\
Remove tasks from individual author entries from the AUTHORS file
for use in the "About" dialog.
'''
import io
import re
import sys
def main():
stdinu8 = io.TextIOWrapper(sys.stdin.buffer, encoding='utf8')
stdoutu8 = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')
stderru8 = io.TextIOWrapper(sys.stderr.buffer, encoding='utf8')
in_subinfo = False
# Assume the first line is blank and skip it. make-authors-short.pl
# skipped over the UTF-8 BOM as well. Do we need to do that here?
stdinu8.readline()
for line in stdinu8:
sub_m = re.search(r'(.*?)\s*\{', line)
if sub_m:
in_subinfo = True
stdoutu8.write(sub_m.group(1) + '\n')
elif '}' in line:
in_subinfo = False
nextline = next(stdinu8)
if not re.match('^\s*$', nextline):
if '{' in nextline:
stderru8.write("No blank line after '}', found " + nextline)
stdoutu8.write(nextline)
elif in_subinfo:
continue
else:
stdoutu8.write(line)
if __name__ == '__main__':
main()