check_GNU_style_lib.py: Suggest to install all missing pip3 packages at once
authorTom de Vries <tom@codesourcery.com>
Mon, 29 May 2017 07:30:47 +0000 (07:30 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Mon, 29 May 2017 07:30:47 +0000 (07:30 +0000)
Instead of:
...
$ ./contrib/check_GNU_style.py
termcolor module is missing (run: pip3 install termcolor)
$ pip3 install termcolor
$ ./contrib/check_GNU_style.py
unidiff module is missing (run: pip3 install unidiff)
$ pip3 install unidiff
$
...

Do:
...
$ ./contrib/check_GNU_style.py
termcolor and unidiff modules are missing (run: pip3 install termcolor unidiff)
$ pip3 install termcolor unidiff
$
...

2017-05-29  Tom de Vries  <tom@codesourcery.com>

* check_GNU_style_lib.py: Use import_pip3 to import pip3 packages.
(import_pip3): New function.

From-SVN: r248554

contrib/ChangeLog
contrib/check_GNU_style_lib.py

index ae0c246f4eb1004aea1274ea4b468cabf5df7e7e..582850857a86b168d8c314161d9d3190b4a1f137 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-29  Tom de Vries  <tom@codesourcery.com>
+
+       * check_GNU_style_lib.py: Use import_pip3 to import pip3 packages.
+       (import_pip3): New function.
+
 2017-05-24  Tom de Vries  <tom@codesourcery.com>
 
        * check_GNU_style_lib.py: New file, factored out of ...
index a1224c11008c95819e4c8ab49df764527d2fa26f..d924e68ecbc07c868d6aaf98d2706ab58864d67d 100755 (executable)
@@ -28,17 +28,29 @@ import sys
 import re
 import unittest
 
-try:
-    from termcolor import colored
-except ImportError:
-    print('termcolor module is missing (run: pip3 install termcolor)')
-    exit(3)
-
-try:
-    from unidiff import PatchSet
-except ImportError:
-    print('unidiff module is missing (run: pip3 install unidiff)')
-    exit(3)
+def import_pip3(*args):
+    missing=[]
+    for (module, names) in args:
+        try:
+            lib = __import__(module)
+        except ImportError:
+            missing.append(module)
+            continue
+        if not isinstance(names, list):
+            names=[names]
+        for name in names:
+            globals()[name]=getattr(lib, name)
+    if len(missing) > 0:
+        missing_and_sep = ' and '.join(missing)
+        missing_space_sep = ' '.join(missing)
+        print('%s %s missing (run: pip3 install %s)'
+              % (missing_and_sep,
+                 ("module is" if len(missing) == 1 else "modules are"),
+                 missing_space_sep))
+        exit(3)
+
+import_pip3(('termcolor', 'colored'),
+            ('unidiff', 'PatchSet'))
 
 from itertools import *