From 95e2af755cc24a58fde8befb441845b92c9e2df0 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Wed, 2 Dec 2015 10:25:45 +0000 Subject: [PATCH] New '--version' command line argument, which prints version and exits. --- fsl/__init__.py | 26 +++++++++++++++++++++----- fsl/fsleyes/frame.py | 1 + fsl/fsleyes/fsleyes_parseargs.py | 9 ++++++--- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/fsl/__init__.py b/fsl/__init__.py index 6a5e19bef..9f97f4634 100644 --- a/fsl/__init__.py +++ b/fsl/__init__.py @@ -45,6 +45,9 @@ The conventional way to run ``fslpy`` is as follows:: single place - the :mod:`fsl.version` module. """ + +from __future__ import print_function + import logging import pkgutil import warnings @@ -249,6 +252,10 @@ def _parseArgs(argv, allTools): parser.add_argument( '-v', '--verbose', action='count', help='Verbose output (can be used up to 3 times)') + + parser.add_argument( + '-V', '--version', action='store_true', + help='Print the current fslpy version and exit') parser.add_argument( '-n', '--noisy', metavar='MODULE', action='append', @@ -261,13 +268,14 @@ def _parseArgs(argv, allTools): parser.add_argument( '-w', '--wxinspect', action='store_true', help='Run wx inspection tool') - parser.add_argument('tool', help='FSL program to run') + + parser.add_argument('tool', help='FSL program to run', nargs='?') # No arguments at all? # I'm not a mind-reader if len(argv) == 0: parser.print_help() - sys.exit(1) + sys.exit(1) # find the index of the first positional # argument, i.e. the tool name @@ -275,6 +283,9 @@ def _parseArgs(argv, allTools): while True: i = i + 1 + + if i >= len(argv): + break if argv[i].startswith('-'): continue @@ -293,6 +304,11 @@ def _parseArgs(argv, allTools): namespace = parser.parse_args(fslArgv) + # Version number + if namespace.version: + print('fslpy version: {}'.format(__version__)) + sys.exit(0) + if namespace.noisy is None: namespace.noisy = [] @@ -307,7 +323,7 @@ def _parseArgs(argv, allTools): # unknown tool name supplied if toolArgv[0] not in allTools: - print '\nUnknown FSL tool: {}\n'.format(toolArgv[0]) + print('\nUnknown FSL tool: {}\n'.format(toolArgv[0])) parser.print_help() sys.exit(1) @@ -315,7 +331,7 @@ def _parseArgs(argv, allTools): # no tool specific argument parser if fslTool.parseArgs is None: - print 'No help for {}'.format(toolArgv[0]) + print('No help for {}'.format(toolArgv[0])) # Otherwise, get help from the tool. We assume that # all the argument parser for every tool will interpret @@ -326,7 +342,7 @@ def _parseArgs(argv, allTools): # Unknown tool name supplied elif namespace.tool not in allTools: - print '\nUnknown FSL tool: {}\n'.format(namespace.tool) + print('\nUnknown FSL tool: {}\n'.format(namespace.tool)) parser.print_help() sys.exit(1) diff --git a/fsl/fsleyes/frame.py b/fsl/fsleyes/frame.py index 34060c109..284d40c0b 100644 --- a/fsl/fsleyes/frame.py +++ b/fsl/fsleyes/frame.py @@ -611,6 +611,7 @@ class FSLEyesFrame(wx.Frame): viewAction) # Perspectives + viewMenu.AppendSeparator() viewMenu.AppendSubMenu(perspectiveMenu, 'Perspectives') self.__makePerspectiveMenu() diff --git a/fsl/fsleyes/fsleyes_parseargs.py b/fsl/fsleyes/fsleyes_parseargs.py index f805ebe0d..0bf41f36b 100644 --- a/fsl/fsleyes/fsleyes_parseargs.py +++ b/fsl/fsleyes/fsleyes_parseargs.py @@ -101,6 +101,9 @@ To make this new propery settable via the command line, you need to: }) """ + +from __future__ import print_function + import sys import os.path as op import functools @@ -838,8 +841,8 @@ def parseArgs(mainParser, argv, name, desc, toolOptsDesc='[options]'): ovlHelp = ovlParser.format_help() ovlHelp = ovlHelp[ovlHelp.index(dispGroup):] - print - print ovlHelp + print() + print(ovlHelp) # And I want to handle overlay argument errors, # rather than having the overlay parser force @@ -938,7 +941,7 @@ def parseArgs(mainParser, argv, name, desc, toolOptsDesc='[options]'): except Exception as e: printHelp(shortHelp=True) - print e.message + print(e.message) sys.exit(1) # We just add a list of argparse.Namespace -- GitLab