X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=commands%2Fjob.py;h=f5805feaa557dcaf65007cdf09ed75c8a5f1ef6d;hb=af61677a8482b671f9a3bb307263a7049b1940f6;hp=908aa9c5eb73b8a179df056a304e5c42a1ec78e1;hpb=947059882d1341cfbd137690643e721525650ff8;p=tools%2Fsat.git diff --git a/commands/job.py b/commands/job.py index 908aa9c..f5805fe 100644 --- a/commands/job.py +++ b/commands/job.py @@ -17,11 +17,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import os -import sys -import traceback -import tempfile import src +import src.salomeTools # Define all possible option for the make command : sat make parser = src.options.Options() @@ -37,9 +35,12 @@ def description(): :return: The text to display for the job command description. :rtype: str ''' - return _("Executes the commands of the job defined" - " in the jobs configuration file\n\nexample:\nsat job " - "--jobs_config my_jobs --name my_job") + return _("""\ +The job command executes the commands of the job defined in the jobs configuration file + +example: +>> sat job --jobs_config my_jobs --name my_job +""") def run(args, runner, logger): '''method that is called when salomeTools is called with job parameter. @@ -111,50 +112,57 @@ 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 = src.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 + end_cmd = ["--command", command] + # 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 - # Get error - error = str(e) - # get stack - __, __, exc_traceback = sys.exc_info() - fp = tempfile.TemporaryFile() - traceback.print_tb(exc_traceback, limit=1, file=fp) - fp.seek(0) - stack = fp.read() + 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) - logger.write('stack: %s\n' % stack, 3) + if len(stack) > 0: + logger.write('stack: %s\n' % stack, 3) # Print the final state if res == 0: