X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=commands%2Fjob.py;h=f27f7e733363ba4b6dde398d9517f092f75fa878;hb=9a63984c9abff122f9bdd56704affba271279ea6;hp=0b7ed6db0bd741c9455a2dc90cccdf299e0a2143;hpb=1d77008157d909e80fe6ed9871446542bdbb0af2;p=tools%2Fsat.git diff --git a/commands/job.py b/commands/job.py index 0b7ed6d..f27f7e7 100644 --- a/commands/job.py +++ b/commands/job.py @@ -19,6 +19,7 @@ import os import src +import salomeTools # Define all possible option for the make command : sat make parser = src.options.Options() @@ -108,41 +109,58 @@ def run(args, runner, logger): res = 0 nb_pass = 0 for command in commands: + specific_option = False # Determine if it is a sat command or a shell command cmd_exe = command.split(" ")[0] # first part if cmd_exe == "sat": - sat_command_name = command.split(" ")[1] - end_cmd = command.replace(cmd_exe + " " + sat_command_name, "") + # use the salomeTools parser to get the options of the command + sat_parser = salomeTools.parser + input_parser = src.remove_item_from_list(command.split(' ')[1:], "") + (options, argus) = sat_parser.parse_args(input_parser) + # Verify if there is a changed option + for attr in dir(options): + if attr.startswith("__"): + continue + if options.__getattr__(attr) != None: + specific_option = True + sat_command_name = argus[0] + end_cmd = " ".join(argus[1:]) else: sat_command_name = "shell" end_cmd = "--command " + command - # Get dynamically the command function to call + # Do not change the options if no option was called in the command + if not(specific_option): + options = None + + # Get dynamically the command function to call sat_command = runner.__getattr__(sat_command_name) + logger.write("Executing " + src.printcolors.printcLabel(command) + " ", 3) logger.write("." * (len_max_command - len(command)) + " ", 3) logger.flush() error = "" - try: - # Execute the command - code = sat_command(end_cmd, - batch = True, - verbose = 0, - logger_add_link = logger) - except Exception as e: - code = 1 - error = str(e) - + stack = "" + # Execute the command + code = sat_command(end_cmd, + options = options, + batch = True, + verbose = 0, + logger_add_link = logger) + # Print the status of the command if code == 0: nb_pass += 1 logger.write('%s\n' % src.printcolors.printc(src.OK_STATUS), 3) else: - res = 1 + if sat_command_name != "test": + res = 1 logger.write('%s %s\n' % (src.printcolors.printc(src.KO_STATUS), error), 3) + if len(stack) > 0: + logger.write('stack: %s\n' % stack, 3) # Print the final state if res == 0: