X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=salomeTools.py;h=e384fc4d972ec654d894ae630feaad0e8411c602;hb=a13a4b1a040e45dae0eec813f20ec6a4ee43e78a;hp=4efb2d0d8041a1ff8f4490651118e6b04f1c8ecc;hpb=ac18dbab387242ff3b710a40f58430f11f1aa09f;p=tools%2Fsat.git diff --git a/salomeTools.py b/salomeTools.py index 4efb2d0..e384fc4 100755 --- a/salomeTools.py +++ b/salomeTools.py @@ -151,16 +151,27 @@ class Sat(object): gettext.install('salomeTools', os.path.join(satdir, 'src', 'i18n')) # Get the arguments in a list and remove the empty elements - argv = args.split(" ") - if argv != ['']: - while "" in argv: argv.remove("") - + argv_0 = args.split(" ") + if argv_0 != ['']: + while "" in argv_0: argv_0.remove("") + + # Format the argv list in order to prevent strings + # that contain a blank to be separated + argv = [] + elem_old = "" + for elem in argv_0: + if argv == [] or elem_old.startswith("-") or elem.startswith("-"): + argv.append(elem) + else: + argv[-1] += " " + elem + elem_old = elem + # if it is provided by the command line, get the application appliToLoad = None if argv != [''] and argv[0][0] != "-": appliToLoad = argv[0].rstrip('*') argv = argv[1:] - + # read the configuration from all the pyconf files cfgManager = config.ConfigManager() self.cfg = cfgManager.get_config(datadir=self.datadir, @@ -185,15 +196,11 @@ class Sat(object): self.cfg.USER.output_verbose_level = 0 silent = (self.cfg.USER.output_verbose_level == 0) - # create log file, unless the command is called - # with a logger as parameter + # create log file logger_command = src.logger.Logger(self.cfg, silent_sysstd=silent, all_in_terminal=self.options.all_in_terminal) - - if logger_add_link is not None: - logger_add_link.xmlFile.append_node_attrib("Links", attrib={__nameCmd__ : logger_command.logFilePath}) - + try: # Execute the hooks (if there is any) # and run method of the command @@ -215,8 +222,6 @@ class Sat(object): if verbose > -1: self.options.__setattr__("output_verbose_level", verbose_save) - - finally: # put final attributes in xml log file # (end time, total time, ...) and write it launchedCommand = ' '.join([self.cfg.VARS.salometoolsway + @@ -224,9 +229,34 @@ class Sat(object): 'sat', __nameCmd__, args]) - logger_command.end_write({"launchedCommand" : launchedCommand}) + launchedCommand = launchedCommand.replace('"', "'") + + # Add a link to the parent command + if logger_add_link is not None: + xmlLinks = logger_add_link.xmlFile.xmlroot.find( + "Links") + src.xmlManager.add_simple_node(xmlLinks, + "link", + text = logger_command.logFileName, + attrib = {"command" : __nameCmd__, + "passed" : res, + "launchedCommand" : launchedCommand}) + logger_add_link.l_logFiles += logger_command.l_logFiles + + finally: + launchedCommand = ' '.join([self.cfg.VARS.salometoolsway + + os.path.sep + + 'sat', + __nameCmd__, + args]) + launchedCommand = launchedCommand.replace('"', "'") + + # Put the final attributes corresponding to end time and + # Write the file to the hard drive + logger_command.end_write( + {"launchedCommand" : launchedCommand}) - return res, logger_command.logFilePath + return res # Make sure that run_command will be redefined # at each iteration of the loop @@ -403,11 +433,11 @@ if __name__ == "__main__": if options.debug_mode: # call classically the command and if it fails, # show exception and stack (usual python mode) - code, __ = fun_command(' '.join(args[1:])) + code = fun_command(' '.join(args[1:])) else: # catch exception in order to show less verbose but elegant message try: - code, __ = fun_command(' '.join(args[1:])) + code = fun_command(' '.join(args[1:])) except Exception as exc: code = 1 write_exception(exc)