blob: 5fb2a68d17fbc5479b06a3a07061d97be230dbf4 [file] [log] [blame]
"""A custom rule that generates a .rs file in a different configuration."""
def _change_cfg_impl(_settings, _attr):
return {"//test/generated_inputs:change_cfg": True}
change_cfg_transition = transition(
implementation = _change_cfg_impl,
inputs = [],
outputs = ["//test/generated_inputs:change_cfg"],
)
def _input_from_different_cfg_impl(ctx):
rs_file = ctx.actions.declare_file(ctx.label.name + ".rs")
ctx.actions.write(
output = rs_file,
content = """
pub fn generated_fn() -> String {
"Generated".to_owned()
}
#[cfg(test)]
mod tests {
#[test]
fn test_generated() {
assert_eq!(super::generated_fn(), "Generated".to_owned());
}
}
""",
)
return OutputGroupInfo(generated_file = depset([rs_file]))
input_from_different_cfg = rule(
implementation = _input_from_different_cfg_impl,
attrs = {
"_allowlist_function_transition": attr.label(
default = Label("@bazel_tools//tools/allowlists/function_transition_allowlist"),
),
},
cfg = change_cfg_transition,
)