diff mbox

[contrib,committed] check_GNU_style_lib.py: Suggest to install all missing pip3 packages at once

Message ID 07478deb-00bc-c3ef-a3ce-a3e9ce40049f@mentor.com
State New
Headers show

Commit Message

Tom de Vries May 29, 2017, 7:35 a.m. UTC
Hi,

this patch simplifies the pip3 dependency setup for check_GNU_style_lib.py.

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
$
...

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

Committed.

Thanks,
- Tom
diff mbox

Patch

check_GNU_style_lib.py: Suggest to install all missing pip3 packages at once

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-28  Tom de Vries  <tom@codesourcery.com>

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

---
 contrib/check_GNU_style_lib.py | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/contrib/check_GNU_style_lib.py b/contrib/check_GNU_style_lib.py
index a1224c1..d924e68 100755
--- a/contrib/check_GNU_style_lib.py
+++ b/contrib/check_GNU_style_lib.py
@@ -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 *