diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-08-31 20:32:35 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 20:32:35 +0300 |
commit | 9e61b4fe99fad66c9dc7484ab62c34a75dec5b60 (patch) | |
tree | a7930ad46a3c165535e43e15f309513cc0e5dec2 /mesonbuild/build.py | |
parent | 82ba2f1e0532686dd7408ea782181b172a291316 (diff) | |
parent | 81f5cee2188dcbd6b92e6b570c2c98961588a17a (diff) | |
download | meson-9e61b4fe99fad66c9dc7484ab62c34a75dec5b60.zip meson-9e61b4fe99fad66c9dc7484ab62c34a75dec5b60.tar.gz meson-9e61b4fe99fad66c9dc7484ab62c34a75dec5b60.tar.bz2 |
Merge pull request #9185 from dcbaker/submit/env-object-as-holder
Make EnvironmentVariablesObject a holder
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r-- | mesonbuild/build.py | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 0143022..bc4065b 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -426,12 +426,16 @@ class ExtractedObjects(HoldableObject): ] class EnvironmentVariables(HoldableObject): - def __init__(self) -> None: - self.envvars = [] + def __init__(self, values: T.Optional[T.Dict[str, str]] = None) -> None: + self.envvars: T.List[T.Tuple[T.Callable[[T.Dict[str, str], str, T.List[str], str], str], str, T.List[str], str]] = [] # The set of all env vars we have operations for. Only used for self.has_name() - self.varnames = set() + self.varnames: T.Set[str] = set() - def __repr__(self): + if values: + for name, value in values.items(): + self.set(name, [value]) + + def __repr__(self) -> str: repr_str = "<{0}: {1}>" return repr_str.format(self.__class__.__name__, self.envvars) @@ -450,14 +454,17 @@ class EnvironmentVariables(HoldableObject): self.varnames.add(name) self.envvars.append((self._prepend, name, values, separator)) - def _set(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str: + @staticmethod + def _set(env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str: return separator.join(values) - def _append(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str: + @staticmethod + def _append(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) - def _prepend(self, env: T.Dict[str, str], name: str, values: T.List[str], separator: str) -> str: + @staticmethod + def _prepend(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]) |