From 1790e0723c6edb29746cc29af44ece46430ba0df Mon Sep 17 00:00:00 2001 From: Radovan Bast Date: Mon, 12 Oct 2015 16:57:27 +0200 Subject: [PATCH] allow custom validation of args --- lib/config.py | 9 +++++++++ update.py | 27 +++++++++++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/lib/config.py b/lib/config.py index f35b8d3..a635d40 100644 --- a/lib/config.py +++ b/lib/config.py @@ -9,6 +9,15 @@ import sys import shutil +def module_exists(module_name): + try: + __import__(module_name) + except ImportError: + return False + else: + return True + + def check_cmake_exists(cmake_command): """ Check whether CMake is installed. If not, print diff --git a/update.py b/update.py index aa71352..9cb110b 100644 --- a/update.py +++ b/update.py @@ -138,9 +138,11 @@ def gen_setup(config, relative_path, setup_script_name): s.append('\nimport os') s.append('import sys') - s.append("\nsys.path.append('%s')" % os.path.join(relative_path, 'lib', 'docopt')) - s.append("\nsys.path.append('%s')" % os.path.join(relative_path, 'lib')) - s.append('from config import configure') + s.append("\nsys.path.append('%s')" % relative_path) + s.append("sys.path.append('%s')" % os.path.join(relative_path, 'lib')) + s.append("sys.path.append('%s')" % os.path.join(relative_path, 'lib', 'docopt')) + + s.append('import config') s.append('import docopt') s.append('\n\noptions = """') @@ -171,16 +173,29 @@ def gen_setup(config, relative_path, setup_script_name): s.append(gen_cmake_command(config)) - s.append("\n\ntry:") + s.append("\n") + s.append("# parse command line args") + s.append("try:") s.append(" arguments = docopt.docopt(options, argv=None)") s.append("except docopt.DocoptExit:") s.append(r" sys.stderr.write('ERROR: bad input to %s\n' % sys.argv[0])") s.append(" sys.stderr.write(options)") s.append(" sys.exit(-1)") - s.append("\nroot_directory = os.path.dirname(os.path.realpath(__file__))") + s.append("\n") + s.append("# we run the arguments through the validate function if it exists") + s.append("if config.module_exists('validate'):") + s.append(" import validate") + s.append(" arguments = validate.validate(sys.argv, arguments)") + s.append("\n") + s.append("root_directory = os.path.dirname(os.path.realpath(__file__))") + s.append("\n") s.append("build_path = arguments['']") + s.append("\n") + s.append("# create cmake command") s.append("cmake_command = '%s %s' % (gen_cmake_command(options, arguments), root_directory)") - s.append("configure(root_directory, build_path, cmake_command, arguments['--show'])") + s.append("\n") + s.append("# run cmake") + s.append("config.configure(root_directory, build_path, cmake_command, arguments['--show'])") return s