diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-04-20 13:58:20 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-04-20 13:58:20 +0300 |
commit | c7e7d1a4c354b21fe9308dd872a99ec4bc7356be (patch) | |
tree | 894ff3c672fdf0389d44951a75fd0e58986ce43a /interpreter.py | |
parent | c21637a01db7f6958c816bfe2a8b0383b96e8f68 (diff) | |
download | meson-c7e7d1a4c354b21fe9308dd872a99ec4bc7356be.zip meson-c7e7d1a4c354b21fe9308dd872a99ec4bc7356be.tar.gz meson-c7e7d1a4c354b21fe9308dd872a99ec4bc7356be.tar.bz2 |
Can execute found programs with run_command.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/interpreter.py b/interpreter.py index 7328cba..7940c94 100644 --- a/interpreter.py +++ b/interpreter.py @@ -754,9 +754,18 @@ class Interpreter(): raise InvalidArguments('Incorrect argument type.') def func_run_command(self, node, args, kwargs): - for i in args: + if len(args) < 1: + raise InterpreterException('Not enough arguments') + cmd = args[0] + cargs = args[1:] + if isinstance(cmd, ExternalProgramHolder): + cmd = cmd.get_command() + elif not isinstance(cmd, str): + raise InterpreterException('First argument is of incorrect type.') + for i in cargs: if not isinstance(i, str): - raise InterpreterObject('Run_command arguments must be strings.') + raise InterpreterException('Run_command arguments must be strings.') + args = [cmd] + cargs return RunProcess(args, self.environment.source_dir, self.environment.build_dir, self.subdir) def func_gettext(self, nodes, args, kwargs): @@ -931,7 +940,9 @@ class Interpreter(): if exename in self.coredata.ext_progs and\ self.coredata.ext_progs[exename].found(): return ExternalProgramHolder(self.coredata.ext_progs[exename]) - extprog = dependencies.ExternalProgram(exename) + # Search for scripts relative to current subdir. + search_dir = os.path.join(self.environment.get_source_dir(), self.subdir) + extprog = dependencies.ExternalProgram(exename, search_dir=search_dir) progobj = ExternalProgramHolder(extprog) self.coredata.ext_progs[exename] = extprog if required and not progobj.found(): |