blob: 78185ef11f8746259831f81c93dcb1b2c0b7a026 [file] [log] [blame]
def _string_option_impl(allowed_values, provider_factory):
def _impl(ctx):
raw_value = ctx.build_setting_value
if raw_value not in allowed_values:
fail(str(ctx.label) + " build setting allowed to take values {" +
", ".join(allowed_values) +
"} but was set to unallowed value " + raw_value)
return provider_factory(raw_value)
return _impl
BrowserProvider = provider(
doc = "Browser family to build the extension for. It's necessary to tailor builds for each browser since each one has a different set of APIs.",
fields = ["browser"],
)
browsers = ["CHROMIUM", "GECKO"]
browser = rule(
implementation = _string_option_impl(
allowed_values = browsers,
provider_factory = lambda v: BrowserProvider(browser = v),
),
build_setting = config.string(flag = True),
)
ChannelProvider = provider(
doc = "Channel to build the extension for.",
fields = ["channel"],
)
channels = ["STABLE", "BETA", "CANARY"]
channel = rule(
implementation = _string_option_impl(
allowed_values = channels,
provider_factory = lambda v: ChannelProvider(channel = v),
),
build_setting = config.string(flag = True),
)