blob: 1567c9a2409acd6f21368ac3a7287b794914e306 [file] [log] [blame]
Andrew Lambeceaec02020-02-11 14:16:41 -07001# Copyright 2020 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4"""IO-related helper functions."""
5
6import os
Andrew Lamb9328c402020-03-05 12:57:59 -07007import warnings
Andrew Lambeceaec02020-02-11 14:16:41 -07008
Andrew Lambbc029d32020-02-24 12:42:50 -07009from bindings.api import config_bundle_pb2
Andrew Lambeceaec02020-02-11 14:16:41 -070010
11
Andrew Lamb9328c402020-03-05 12:57:59 -070012def read_config(path: str) -> config_bundle_pb2.ConfigBundle:
13 """Reads a binary proto from a file.
14
15 Note that passing paths to repo roots is deprecated, and will raise a
16 warning. If a repo root is passed, it is assumed the config can be found at
17 'generated/config.binaryproto'.
Andrew Lambeceaec02020-02-11 14:16:41 -070018
19 Args:
Andrew Lamb9328c402020-03-05 12:57:59 -070020 path: Path to the binary proto. See note above about deprecated repo
21 root behavior.
Andrew Lambeceaec02020-02-11 14:16:41 -070022 """
Andrew Lamb9328c402020-03-05 12:57:59 -070023 if os.path.isdir(path):
24 warnings.warn(
25 ('Passing a path to a repo root is deprecated, please pass a full path'
26 ' to a binary proto. Path: {}'.format(path)), FutureWarning)
27 path = os.path.join(path, 'generated', 'config.binaryproto')
28
Andrew Lambeceaec02020-02-11 14:16:41 -070029 project_config = config_bundle_pb2.ConfigBundle()
Andrew Lamb9328c402020-03-05 12:57:59 -070030 with open(os.path.join(path), 'rb') as f:
Andrew Lambeceaec02020-02-11 14:16:41 -070031 project_config.ParseFromString(f.read())
32 return project_config