diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2020-01-06 15:50:45 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2020-02-04 21:28:32 +0200 |
commit | 15eb0014acf256f4b3b3ffaf269d681e287f9c92 (patch) | |
tree | 06cc6100de34eb307252179b940de81c22ef33ec /mesonbuild/interpreter.py | |
parent | 8d68fa22e0508337dd449a7dc66d70d9d15f4f8e (diff) | |
download | meson-15eb0014acf256f4b3b3ffaf269d681e287f9c92.zip meson-15eb0014acf256f4b3b3ffaf269d681e287f9c92.tar.gz meson-15eb0014acf256f4b3b3ffaf269d681e287f9c92.tar.bz2 |
interpreter: Iterate custom target outputs
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 0d87bab..e32e0a1 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -871,15 +871,23 @@ class JarHolder(BuildTargetHolder): def __init__(self, target, interp): super().__init__(target, interp) -class CustomTargetIndexHolder(InterpreterObject, ObjectHolder): - def __init__(self, object_to_hold): - InterpreterObject.__init__(self) - ObjectHolder.__init__(self, object_to_hold) +class CustomTargetIndexHolder(TargetHolder): + def __init__(self, target, interp): + super().__init__(target, interp) + self.methods.update({'full_path': self.full_path_method, + }) + + @FeatureNew('custom_target[i].full_path', '0.54.0') + @noPosargs + @permittedKwargs({}) + def full_path_method(self, args, kwargs): + return self.interpreter.backend.get_target_filename_abs(self.held_object) class CustomTargetHolder(TargetHolder): def __init__(self, target, interp): super().__init__(target, interp) self.methods.update({'full_path': self.full_path_method, + 'to_list': self.to_list_method, }) def __repr__(self): @@ -892,8 +900,17 @@ class CustomTargetHolder(TargetHolder): def full_path_method(self, args, kwargs): return self.interpreter.backend.get_target_filename_abs(self.held_object) + @FeatureNew('custom_target.to_list', '0.54.0') + @noPosargs + @permittedKwargs({}) + def to_list_method(self, args, kwargs): + result = [] + for i in self.held_object: + result.append(CustomTargetIndexHolder(i, self.interpreter)) + return result + def __getitem__(self, index): - return CustomTargetIndexHolder(self.held_object[index]) + return CustomTargetIndexHolder(self.held_object[index], self.interpreter) def __setitem__(self, index, value): # lgtm[py/unexpected-raise-in-special-method] raise InterpreterException('Cannot set a member of a CustomTarget') |