blob: 0a67f20c89e5967b4902d2abe97dcef75c1c7b07 [file]
"""An indirection layer for referencing flags whether they are native or defined in Starlark."""
load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
visibility([
"//bazel/flags",
"//bazel/private/...",
"//third_party/grpc/bazel",
])
def get_flag_value(ctx, flag_name):
"""Returns the value of the given flag attribute from rule context.
Args:
ctx: The rule context.
flag_name: The name of the flag to get the value for.
Returns:
The value of the flag. If the value is a list, returns a mutable copy.
"""
attr_val = getattr(ctx.attr, "_" + flag_name)
if BuildSettingInfo in attr_val:
val = attr_val[BuildSettingInfo].value
if type(val) == "list":
return list(val)
return val
if type(attr_val) == "list":
return list(attr_val)
return attr_val