import tempfile
import src
+import salomeTools
# Define all possible option for the make command : sat make <options>
parser = src.options.Options()
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
+ (options, argus) = sat_parser.parse_args(command.split(' ')[1:])
+ # 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
+ # 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 " +
try:
# Execute the command
code = sat_command(end_cmd,
+ options = options,
batch = True,
verbose = 0,
logger_add_link = logger)
(file_, pathname, description) = imp.find_module(nameCmd, [dirPath])
module = imp.load_module(nameCmd, file_, pathname, description)
- def run_command(args='', batch = False, verbose = -1, logger_add_link = None):
+ def run_command(args='',
+ options=None,
+ batch = False,
+ verbose = -1,
+ logger_add_link = None):
'''The function that will load the configuration (all pyconf)
and return the function run of the command corresponding to module
if argv != [''] and argv[0][0] != "-":
appliToLoad = argv[0].rstrip('*')
argv = argv[1:]
-
+
+ # Check if the global options of salomeTools have to be changed
+ if options:
+ options_save = self.options
+ self.options = options
+
# read the configuration from all the pyconf files
cfgManager = config.ConfigManager()
self.cfg = cfgManager.get_config(datadir=self.datadir,
application=appliToLoad,
options=self.options,
command=__nameCmd__)
-
+
# Set the verbose mode if called
if verbose > -1:
verbose_save = self.options.output_verbose_level
if res is None:
res = 0
+ # come back to the original global options
+ options_launched = ""
+ if options:
+ options_launched = get_text_from_options(self.options)
+ self.options = options_save
+
# come back in the original batch mode if
# batch argument was called
if batch:
launchedCommand = ' '.join([self.cfg.VARS.salometoolsway +
os.path.sep +
'sat',
+ options_launched,
__nameCmd__,
args])
launchedCommand = launchedCommand.replace('"', "'")
launchedCommand = ' '.join([self.cfg.VARS.salometoolsway +
os.path.sep +
'sat',
+ options_launched,
__nameCmd__,
args])
launchedCommand = launchedCommand.replace('"', "'")
(file_, pathname, description) = imp.find_module(module, [cmdsdir])
module = imp.load_module(module, file_, pathname, description)
return module
-
+
+def get_text_from_options(options):
+ text_options = ""
+ for attr in dir(options):
+ if attr.startswith("__"):
+ continue
+ if options.__getattr__(attr) != None:
+ option_contain = options.__getattr__(attr)
+ if type(option_contain)==type([]):
+ option_contain = ",".join(option_contain)
+ if type(option_contain)==type(True):
+ option_contain = ""
+ text_options+= "--%s %s " % (attr, option_contain)
+ return text_options
+
+
def print_version():
'''prints salomeTools version (in src/internal_config/salomeTools.pyconf)
'''