forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuckconfig.bzl
38 lines (33 loc) · 1.22 KB
/
buckconfig.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
def read(section, field, default = None):
"""Read a `string` from `.buckconfig`."""
return native.read_config(section, field, default)
def read_bool(section, field, default = None, required = True):
"""Read a `boolean` from `.buckconfig`."""
# Treat the empty string as "unset". This allows the user to "override" a
# previous setting by "clearing" it out.
val = read(section, field)
if val != None and val != "":
# Fast-path string check
if val == "True" or val == "true":
return True
elif val == "False" or val == "false":
return False
# Else fall back to lower casing
if val.lower() == "true":
return True
elif val.lower() == "false":
return False
else:
fail(
"`{}:{}`: cannot coerce {!r} to bool".format(section, field, val),
)
elif default != None:
return default
elif not required:
return None
else:
fail("`{}:{}`: no value set".format(section, field))