]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - tools/update-dbus-docs.py
tools: make update-dbus-docs compatible with Python 3.7
[thirdparty/systemd.git] / tools / update-dbus-docs.py
index ebe67af836fa5f18d67d50f43eeb48a34b34cf89..269b2196a26a3e7c79734d809394aa95ffe93891 100755 (executable)
@@ -18,6 +18,11 @@ try:
 except ImportError as e:
     shlex_join = e
 
+try:
+    from shlex import quote as shlex_quote
+except ImportError as e:
+    shlex_quote = e
+
 class NoCommand(Exception):
     pass
 
@@ -186,7 +191,10 @@ def subst_output(document, programlisting, stats):
     interface = programlisting.get('interface')
 
     argv = [f'{opts.build_dir}/{executable}', f'--bus-introspect={interface}']
-    print(f'COMMAND: {shlex_join(argv)}')
+    if isinstance(shlex_join, Exception):
+        print(f'COMMAND: {" ".join(shlex_quote(arg) for arg in argv)}')
+    else:
+        print(f'COMMAND: {shlex_join(argv)}')
 
     try:
         out = subprocess.check_output(argv, text=True)
@@ -296,7 +304,7 @@ def parse_args():
 if __name__ == '__main__':
     opts = parse_args()
 
-    for item in (etree, shlex_join):
+    for item in (etree, shlex_quote):
         if isinstance(item, Exception):
             print(item, file=sys.stderr)
             exit(77 if opts.test else 1)
@@ -308,7 +316,7 @@ if __name__ == '__main__':
 
     # Let's print all statistics at the end
     mlen = max(len(page) for page in stats)
-    total = sum((item['stats'] for item in stats.values()), start=collections.Counter())
+    total = sum((item['stats'] for item in stats.values()), collections.Counter())
     total = 'total', dict(stats=total, outdated=False)
     outdated = []
     for page, info in sorted(stats.items()) + [total]: