From: Frederic Massart Date: Mon, 10 Mar 2014 04:33:21 +0000 (+0800) Subject: Arguments can be passed to scripts. Fixes #69 X-Git-Tag: v1.0~22 X-Git-Url: https://git.cameron1729.xyz/?a=commitdiff_plain;h=563cb6aafa033f02650c8b1f9ca8049f2831ebf8;p=mdk.git Arguments can be passed to scripts. Fixes #69 --- diff --git a/lib/commands/run.py b/lib/commands/run.py index 13b1114..4cba201 100644 --- a/lib/commands/run.py +++ b/lib/commands/run.py @@ -63,6 +63,14 @@ class RunCommand(Command): } ), ( + ['-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': '?', @@ -107,7 +115,7 @@ class RunCommand(Command): 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) diff --git a/lib/moodle.py b/lib/moodle.py index db005d1..6913a9b 100644 --- a/lib/moodle.py +++ b/lib/moodle.py @@ -607,9 +607,9 @@ class Moodle(object): 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""" diff --git a/lib/scripts.py b/lib/scripts.py index a9b3b65..ee73667 100644 --- a/lib/scripts.py +++ b/lib/scripts.py @@ -121,16 +121,23 @@ class Scripts(object): 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'): @@ -139,7 +146,7 @@ class Scripts(object): 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: