diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-13 17:41:47 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-13 17:41:47 +0200 |
commit | 79c9e1e1722cdb71e9bb6c4a3c89424879293dfb (patch) | |
tree | 2c6e6eb386037d16e5ec0d0ce3a1b02f4600480c /interpreter.py | |
parent | 5969b1ed334454ff6907c521493d635bfb878456 (diff) | |
download | meson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.zip meson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.tar.gz meson-79c9e1e1722cdb71e9bb6c4a3c89424879293dfb.tar.bz2 |
Start work on descending to subdirectories.
Diffstat (limited to 'interpreter.py')
-rwxr-xr-x | interpreter.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/interpreter.py b/interpreter.py index 8969d68..8268d2e 100755 --- a/interpreter.py +++ b/interpreter.py @@ -17,6 +17,7 @@ import parser import nodes import environment +import os class InterpreterException(Exception): pass @@ -168,6 +169,7 @@ class Interpreter(): self.variables = {} self.environment = build.environment self.build_func_dict() + self.subdir = '' def build_func_dict(self): self.funcs = {'project' : self.func_project, @@ -178,7 +180,8 @@ class Interpreter(): 'shared_library' : self.func_shared_lib, 'add_test' : self.func_add_test, 'headers' : self.func_headers, - 'man' : self.func_man + 'man' : self.func_man, + 'subdir' : self.func_subdir } def sanity_check_ast(self): @@ -285,6 +288,16 @@ class Interpreter(): m = Man(args) self.build.man.append(m) return m + + def func_subdir(self, node, args): + self.validate_arguments(args, 1, [str]) + prev_subdir = self.subdir + self.subdir = os.path.join(prev_subdir, args[0]) + buildfilename = os.path.join(self.subdir, environment.builder_filename) + code = open(os.path.join(self.environment.get_source_dir(), buildfilename)).read() + assert(isinstance(code, str)) + print('Going to subdirectory "%s".' % self.subdir) + self.subdir = prev_subdir def build_target(self, node, args, targetclass): for a in args: |