diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2016-09-25 16:56:49 +0100 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-25 18:56:49 +0300 |
commit | 3aebdb717a489bd7f8f441ffdfb65dcb71ab3853 (patch) | |
tree | 73c7b981a5dd197c51d345b20bc6379750c601fb /mesonbuild/interpreter.py | |
parent | 84d4dc3bbbc59929cb0d2f43b594e2ceff29dacc (diff) | |
download | meson-3aebdb717a489bd7f8f441ffdfb65dcb71ab3853.zip meson-3aebdb717a489bd7f8f441ffdfb65dcb71ab3853.tar.gz meson-3aebdb717a489bd7f8f441ffdfb65dcb71ab3853.tar.bz2 |
configuration_data: can pass descriptions to setters (#783)
Add support for passing a description to configuration data
setter methods via a 'description' kwarg. The description
string will be used when meson generates the entire configure
file without a template, autoconf-style.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index aa032e5..b5da91f 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -228,40 +228,44 @@ class ConfigurationDataHolder(InterpreterObject): def mark_used(self): self.used = True - def validate_args(self, args): + def validate_args(self, args, kwargs): if len(args) != 2: raise InterpreterException("Configuration set requires 2 arguments.") if self.used: raise InterpreterException("Can not set values on configuration object that has been used.") name = args[0] val = args[1] + desc = kwargs.get('description', None) if not isinstance(name, str): raise InterpreterException("First argument to set must be a string.") - return (name, val) + if desc is not None and not isinstance(desc, str): + raise InterpreterException('Description must be a string.') + + return (name, val, desc) def set_method(self, args, kwargs): - (name, val) = self.validate_args(args) - self.held_object.values[name] = val + (name, val, desc) = self.validate_args(args, kwargs) + self.held_object.values[name] = (val, desc) def set_quoted_method(self, args, kwargs): - (name, val) = self.validate_args(args) + (name, val, desc) = self.validate_args(args, kwargs) if not isinstance(val, str): raise InterpreterException("Second argument to set_quoted must be a string.") escaped_val = '\\"'.join(val.split('"')) - self.held_object.values[name] = '"' + escaped_val + '"' + self.held_object.values[name] = ('"' + escaped_val + '"', desc) def set10_method(self, args, kwargs): - (name, val) = self.validate_args(args) + (name, val, desc) = self.validate_args(args, kwargs) if val: - self.held_object.values[name] = 1 + self.held_object.values[name] = (1, desc) else: - self.held_object.values[name] = 0 + self.held_object.values[name] = (0, desc) def has_method(self, args, kwargs): return args[0] in self.held_object.values def get(self, name): - return self.held_object.values[name] + return self.held_object.values[name] # (val, desc) def keys(self): return self.held_object.values.keys() |