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