swc-installation-test-2.py: Add --help and --verbose
authorW. Trevor King <wking@tremily.us>
Tue, 26 Feb 2013 03:51:32 +0000 (22:51 -0500)
committerW. Trevor King <wking@tremily.us>
Tue, 26 Feb 2013 04:01:35 +0000 (23:01 -0500)
The system information is useful for troubleshooting a student's
installation problems, but it is probably less useful for the student
themselves.  Turn off this troubleshooting information by default and
require the --verbose option to re-enable it.

If we didn't have to maintain support for Python 2.6, we could use
argparse instead of optparse.  The optparse module is deprecated for
2.7, 3.2, and later, but it is still part of the stdandard library.

Also update the README to point out --verbose.

setup/README.md
setup/swc-installation-test-2.py

index aba09a94fd4cbc5da5cc548aa9f0928f269c3492..ee383e32f9d298656956e9684745698ba687b4a4 100644 (file)
@@ -21,11 +21,29 @@ If you see something like:
     $ python swc-installation-test-2.py
     check virtual-shell...  fail
     …
-    For instructings on installing a particular package,
-    see the failure message for that package printed above.
+    check for command line shell (virtual-shell) failed:
+      command line shell (virtual-shell) requires at least one of the following dependencies
+      For instructions on installing an up-to-date version, see
+      http://software-carpentry.org/setup/
+      causes:
+      check for Bourne Again Shell (bash) failed:
+        could not find 'bash' executable for Bourne Again Shell (bash)
+        For instructions on installing an up-to-date version, see
+        http://software-carpentry.org/setup/
     …
 
-follow the suggestions to try and install any missing software.
+follow the suggestions to try and install any missing software.  For
+additional troubleshooting information, you can use the `--verbose`
+option:
+
+    $ python swc-installation-test-2.py --verbose
+    check virtual-shell...  fail
+    …
+    ==================
+    System information
+    ==================
+    os.name            : posix
+    …
 
 Instructors
 ===========
index 16a10eea516ca12b9a11bef8ee22dbc4578b9a3c..8449429b9e608d7e15f97c7a4adc14fa09f92ccf 100755 (executable)
@@ -799,8 +799,18 @@ def print_suggestions(instructor_fallback=True):
 
 
 if __name__ == '__main__':
+    import optparse as _optparse
+
+    parser = _optparse.OptionParser(usage='%prog [options] [check...]')
+    epilog = __doc__
+    parser.format_epilog = lambda formatter: '\n' + epilog
+    parser.add_option(
+        '-v', '--verbose', action='store_true',
+        help=('print additional information to help troubleshoot '
+              'installation issues'))
+    options,args = parser.parse_args()
     try:
-        passed = check(_sys.argv[1:])
+        passed = check(args)
     except InvalidCheck as e:
         print("I don't know how to check for {0!r}".format(e.check))
         print('I do know how to check for:')
@@ -812,7 +822,8 @@ if __name__ == '__main__':
                 print('  {0}'.format(key))
         _sys.exit(1)
     if not passed:
-        print()
-        print_system_info()
-        print_suggestions(instructor_fallback=True)
+        if options.verbose:
+            print()
+            print_system_info()
+            print_suggestions(instructor_fallback=True)
         _sys.exit(1)