diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-04-21 16:27:58 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-04-21 16:27:58 +0300 |
commit | bf9b5d7b726c9388e5204fb44969fd11730944c6 (patch) | |
tree | 9391fbac79ad1e5dfd9059c9a8bcfce5e00e6db5 /interpreter.py | |
parent | a92fcb711b5b56ee6858d73dc90eda0e1e5d91a4 (diff) | |
download | meson-bf9b5d7b726c9388e5204fb44969fd11730944c6.zip meson-bf9b5d7b726c9388e5204fb44969fd11730944c6.tar.gz meson-bf9b5d7b726c9388e5204fb44969fd11730944c6.tar.bz2 |
The first step in a major refactoring starts by adding a new layer of abstraction.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/interpreter.py b/interpreter.py index 75df340..647cc52 100644 --- a/interpreter.py +++ b/interpreter.py @@ -22,6 +22,8 @@ import optinterpreter import wrap import mesonlib import os, sys, platform, subprocess, shutil, uuid, re +from mesonlib import File + import importlib class InterpreterException(coredata.MesonException): @@ -777,6 +779,7 @@ class Interpreter(): 'vcs_tag' : self.func_vcs_tag, 'set_variable' : self.func_set_variable, 'import' : self.func_import, + 'file' : self.func_file, } def module_method_callback(self, invalues): @@ -877,6 +880,15 @@ class Interpreter(): self.environment.coredata.modules[modname] = module return ModuleHolder(modname, self.environment.coredata.modules[modname], self) + def func_file(self, node, args, kwargs): + if len(args) != 1: + raise InvalidCode('File takes one argument.') + fname = args[0] + if not isinstance(fname, str): + raise InvalidCode('Argument to import was not a string') + fobj = File.from_source_file(self.environment.source_dir, self.subdir, fname) + return fobj + def set_variable(self, varname, variable): if variable is None: raise InvalidCode('Can not assign None to variable.') @@ -1549,7 +1561,8 @@ class Interpreter(): isinstance(value, dependencies.Dependency) or\ isinstance(value, str) or\ isinstance(value, int) or \ - isinstance(value, list): + isinstance(value, list) or \ + isinstance(value, File): return True return False |