}
),
(
+ ['-g', '--arguments'],
+ {
+ 'help': 'a list of arguments to pass to the script. Use --arguments="--list of --arguments" if you need to use dashes. Otherwise add -- after the argument list.',
+ 'metavar': 'arguments',
+ 'nargs': '+'
+ }
+ ),
+ (
['script'],
{
'nargs': '?',
for M in Mlist:
logging.info('Running \'%s\' on \'%s\'' % (args.script, M.get('identifier')))
try:
- M.runScript(args.script, stderr=None, stdout=None)
+ M.runScript(args.script, stderr=None, stdout=None, arguments=args.arguments)
except Exception as e:
logging.warning('Error while running the script on %s' % M.get('identifier'))
logging.debug(e)
self.reload()
- def runScript(self, scriptname, **kwargs):
+ def runScript(self, scriptname, arguments=None, **kwargs):
"""Runs a script on the instance"""
- return Scripts.run(scriptname, self.get('path'), cmdkwargs=kwargs)
+ return Scripts.run(scriptname, self.get('path'), arguments=arguments, cmdkwargs=kwargs)
def update(self, remote=None):
"""Update the instance from the remote"""
return cli
@classmethod
- def run(cls, script, path, cmdkwargs={}):
+ def run(cls, script, path, arguments=None, cmdkwargs={}):
"""Executes a script at in a certain directory"""
+ # Converts arguments to a string.
+ arguments = '' if arguments == None else arguments
+ if type(arguments) == list:
+ arguments = ' '.join(arguments)
+ arguments = ' ' + arguments
+
cli = cls.find(script)
if cli.endswith('.php'):
dest = os.path.join(path, 'mdkscriptrun.php')
logging.debug('Copying %s to %s' % (cli, dest))
shutil.copyfile(cli, dest)
- cmd = '%s %s' % (C.get('php'), dest)
+ cmd = '%s %s %s' % (C.get('php'), dest, arguments)
+
result = process(cmd, cwd=path, **cmdkwargs)
os.remove(dest)
elif cli.endswith('.sh'):
shutil.copyfile(cli, dest)
os.chmod(dest, stat.S_IRUSR | stat.S_IXUSR)
- cmd = '%s' % (dest)
+ cmd = '%s %s' % (dest, arguments)
result = process(cmd, cwd=path, **cmdkwargs)
os.remove(dest)
else: