diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2019-09-17 09:48:41 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-10-14 12:52:10 +0200 |
commit | 1f796ca706b4baad80c5df620b53b60d0ddfd6a6 (patch) | |
tree | a0ec99c3874e46c28cbe65db16bcdf4ef5244d43 /Documentation | |
parent | 014018215187e391b30b06b96c3b8329eead25d6 (diff) | |
download | barebox-1f796ca706b4baad80c5df620b53b60d0ddfd6a6.tar.gz barebox-1f796ca706b4baad80c5df620b53b60d0ddfd6a6.tar.xz |
Documentation: make gen_commands helper python3 compatible
On some machines the python command is provided by Python 3 while on
most (at least in my bubble) it is still Python 2. Modify the code to
make it usable by both Python versions.
print_function is available in __future__ since Python 2.6.0a2, which
shouldn't be a relevant restriction.
The modified script generates the same documentation as the old one;
independent if the script is called using Python 2 (here: 2.7.16) or
Python 3 (here: 3.7.3).
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'Documentation')
-rwxr-xr-x | Documentation/gen_commands.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/Documentation/gen_commands.py b/Documentation/gen_commands.py index 6251b4f22e..203a39bb11 100755 --- a/Documentation/gen_commands.py +++ b/Documentation/gen_commands.py @@ -1,5 +1,7 @@ #!/usr/bin/python +from __future__ import print_function + import errno import os import re @@ -28,10 +30,15 @@ CONT = re.compile(r"""\s*"(.*?)"\s*\)?\s*$""") CMDS = {} +def string_escape(s): + # This used to do s.decode("string_escape") which isn't available on Python 3. + # Actually we only need to drop '\t' and '\n', so do this here. + return s.replace(r'\t', '').replace(r'\n', '') + def parse_c(name): cmd = None last = None - for line in file(name, 'r'): + for line in open(name, 'r'): x = HELP_START.match(line) if x: cmd = CMDS.setdefault(x.group(1), defaultdict(list)) @@ -50,14 +57,14 @@ def parse_c(name): last = cmd['h_pre'] else: last = cmd['h_post'] - last.append(x.group(1).decode("string_escape").strip()) + last.append(string_escape(x.group(1)).strip()) continue x = HELP_OPT.match(line) if x: last = cmd['h_opts'] last.append([ - x.group(1).decode("string_escape"), - x.group(2).decode("string_escape") + string_escape(x.group(1)), + string_escape(x.group(2)), ]) continue x = CMD_FUNC.match(line) @@ -68,12 +75,12 @@ def parse_c(name): x = CMD_DESC.match(line) if x: last = cmd['c_desc'] - last.append(x.group(1).decode("string_escape")) + last.append(string_escape(x.group(1))) continue x = CMD_OPTS.match(line) if x: last = cmd['c_opts'] - last.append(x.group(1).decode("string_escape")) + last.append(string_escape(x.group(1))) continue x = CMD_GROUP.match(line) if x: @@ -85,9 +92,9 @@ def parse_c(name): if last is None: raise Exception("Parse error in %s: %r" % (name, line)) if isinstance(last[-1], str): - last[-1] += x.group(1).decode("string_escape") + last[-1] += string_escape(x.group(1)) elif isinstance(last[-1], list): - last[-1][1] += x.group(1).decode("string_escape") + last[-1][1] += string_escape(x.group(1)) continue x = HELP_END.match(line) if x: @@ -163,7 +170,7 @@ for name, cmd in CMDS.items(): rst = gen_rst(name, cmd) group = cmd.get('c_group') if group is None: - print >> sys.stderr, "gen_commands: warning: using default group 'misc' for command '%s'" % name + print("gen_commands: warning: using default group 'misc' for command '%s'" % name, file=sys.stderr) group = ['misc'] subdir = os.path.join(sys.argv[2], group[0]) try: @@ -183,9 +190,8 @@ for name, cmd in CMDS.items(): except: pass hash_new = hashlib.sha1() - hash_new.update(rst) + hash_new.update(rst.encode('utf-8')) if hash_old.hexdigest() == hash_new.hexdigest(): continue - file(target, 'w').write(rst) - + open(target, 'w').write(rst) |