xref: /aosp_15_r20/external/google-cloud-java/owl-bot-postprocessor/synthtool/preconfig.py (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1# Copyright 2020 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of 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,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import functools
16import os
17
18import google.protobuf.json_format
19
20from synthtool.protos.preconfig_pb2 import Preconfig
21
22PRECONFIG_ENVIRONMENT_VARIABLE = "SYNTHTOOL_PRECONFIG_FILE"
23
24PRECONFIG_HELP = """
25A json file containing a description of prefetch sources that this synth.py may
26us.  See preconfig.proto for detail about the format.
27"""
28
29
30@functools.lru_cache(maxsize=None)
31def load():
32    """Loads the preconfig file specified in an environment variable.
33
34    Returns:
35      An instance of Preconfig
36    """
37    preconfig_file_path = os.environ.get(PRECONFIG_ENVIRONMENT_VARIABLE)
38    if not preconfig_file_path:
39        return Preconfig()
40    with open(preconfig_file_path, "rt") as json_file:
41        return google.protobuf.json_format.Parse(json_file.read(), Preconfig())
42