aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-03-08 15:37:57 -0500
committerXavier Claessens <xclaesse@gmail.com>2021-03-16 09:00:50 -0400
commite0fcccc6e21341841014ff0ef685cf20d78e8fde (patch)
tree2054dd5198ec85796763c9388b64c54cc4c1c39c /mesonbuild/build.py
parent2be074b1d445fcd30535bcf7518f8ce0738bcbf3 (diff)
downloadmeson-e0fcccc6e21341841014ff0ef685cf20d78e8fde.zip
meson-e0fcccc6e21341841014ff0ef685cf20d78e8fde.tar.gz
meson-e0fcccc6e21341841014ff0ef685cf20d78e8fde.tar.bz2
EnvironmentVariables: Simplify and annotate
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py45
1 files changed, 20 insertions, 25 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 620f40f..e3fad3d 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -402,41 +402,36 @@ class EnvironmentVariables:
repr_str = "<{0}: {1}>"
return repr_str.format(self.__class__.__name__, self.envvars)
- def add_var(self, method, name, args, kwargs):
- self.varnames.add(name)
- self.envvars.append((method, name, args, kwargs))
-
- def has_name(self, name):
+ def has_name(self, name: str) -> bool:
return name in self.varnames
- def get_value(self, values, kwargs):
- separator = kwargs.get('separator', os.pathsep)
+ def set(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
+ self.varnames.add(name)
+ self.envvars.append((self._set, name, values, separator))
- value = ''
- for var in values:
- value += separator + var
- return separator, value.strip(separator)
+ def append(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
+ self.varnames.add(name)
+ self.envvars.append((self._append, name, values, separator))
- def set(self, env, name, values, kwargs):
- return self.get_value(values, kwargs)[1]
+ def prepend(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
+ self.varnames.add(name)
+ self.envvars.append((self._prepend, name, values, separator))
- def append(self, env, name, values, kwargs):
- sep, value = self.get_value(values, kwargs)
- if name in env:
- return env[name] + sep + value
- return value
+ def _set(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str:
+ return separator.join(values)
- def prepend(self, env, name, values, kwargs):
- sep, value = self.get_value(values, kwargs)
- if name in env:
- return value + sep + env[name]
+ def _append(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str:
+ curr = env.get(name)
+ return separator.join(values if curr is None else [curr] + values)
- return value
+ def _prepend(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str:
+ curr = env.get(name)
+ return separator.join(values if curr is None else values + [curr])
def get_env(self, full_env: T.Dict[str, str]) -> T.Dict[str, str]:
env = full_env.copy()
- for method, name, values, kwargs in self.envvars:
- env[name] = method(full_env, name, values, kwargs)
+ for method, name, values, separator in self.envvars:
+ env[name] = method(full_env, name, values, separator)
return env
class Target: