Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_cli / py / pw_cli / env.py
1 # Copyright 2020 The Pigweed Authors
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 # use this file except in compliance with the License. You may obtain a copy of
5 # the License at
6 #
7 #     https://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations under
13 # the License.
14 """The env module defines the environment variables used by Pigweed."""
15
16 from typing import Optional
17
18 from pw_cli import envparse
19
20
21 def pigweed_environment_parser() -> envparse.EnvironmentParser:
22     """Defines Pigweed's environment variables on an EnvironmentParser."""
23     parser = envparse.EnvironmentParser(prefix='PW_')
24
25     parser.add_var('PW_BOOTSTRAP_PYTHON')
26     parser.add_var('PW_ENABLE_PRESUBMIT_HOOK_WARNING', default=False)
27     parser.add_var('PW_EMOJI', type=envparse.strict_bool, default=False)
28     parser.add_var('PW_ENVSETUP')
29     parser.add_var('PW_ENVSETUP_FULL')
30     parser.add_var('PW_ENVSETUP_NO_BANNER',
31                    type=envparse.strict_bool,
32                    default=False)
33     parser.add_var('PW_ENVSETUP_QUIET',
34                    type=envparse.strict_bool,
35                    default=False)
36     parser.add_var('PW_ENVIRONMENT_ROOT')
37     parser.add_var('PW_PROJECT_ROOT')
38     parser.add_var('PW_ROOT')
39     parser.add_var('PW_SKIP_BOOTSTRAP')
40     parser.add_var('PW_SUBPROCESS', type=envparse.strict_bool, default=False)
41     parser.add_var('PW_USE_COLOR', type=envparse.strict_bool, default=False)
42     parser.add_var('PW_USE_GCS_ENVSETUP', type=envparse.strict_bool)
43
44     parser.add_allowed_suffix('_CIPD_INSTALL_DIR')
45
46     parser.add_var('PW_ENVSETUP_DISABLE_SPINNER',
47                    type=envparse.strict_bool,
48                    default=False)
49     parser.add_var('PW_DOCTOR_SKIP_CIPD_CHECKS')
50     parser.add_var('PW_ACTIVATE_SKIP_CHECKS',
51                    type=envparse.strict_bool,
52                    default=False)
53
54     # TODO(pwbug/274) Remove after some transition time. These are no longer
55     # used but may be set by users or downstream projects, or just in currently
56     # active shells.
57     parser.add_var('PW_CIPD_PACKAGE_FILES')
58     parser.add_var('PW_VIRTUALENV_REQUIREMENTS')
59     parser.add_var('PW_VIRTUALENV_REQUIREMENTS_APPEND_DEFAULT')
60     parser.add_var('PW_VIRTUALENV_SETUP_PY_ROOTS')
61     parser.add_var('PW_CARGO_PACKAGE_FILES')
62     parser.add_var('PW_CARGO_SETUP', type=envparse.strict_bool, default=False)
63     parser.add_var('PW_VIRTUALENV_REQUIREMENTS_APPEND_DEFAULT')
64
65     parser.add_var('PW_BANNER_FUNC')
66     parser.add_var('PW_BRANDING_BANNER')
67     parser.add_var('PW_BRANDING_BANNER_COLOR', default='magenta')
68
69     return parser
70
71
72 # Internal: memoize environment parsing to avoid unnecessary computation in
73 # multiple calls to pigweed_environment().
74 _memoized_environment: Optional[envparse.EnvNamespace] = None
75
76
77 def pigweed_environment() -> envparse.EnvNamespace:
78     """Returns Pigweed's parsed environment."""
79     global _memoized_environment  # pylint: disable=global-statement
80
81     if _memoized_environment is None:
82         _memoized_environment = pigweed_environment_parser().parse_env()
83
84     return _memoized_environment