{ "headers": { "doc": ["Transitive public headers of C++ target"] , "target_fields": ["proto", "deps"] , "string_fields": ["stage"] , "field_doc": { "proto": ["The proto source files for creating cc bindings."] , "deps": ["The targets to obtain the headers from."] , "stage": [ "The logical location of the header files. Individual directory" , "components are joined with \"/\"." ] } , "anonymous": { "proto-deps": { "target": "proto" , "provider": "proto" , "rule_map": { "library": ["./", "../proto", "library"] , "service library": ["./", "../proto", "service library"] } } } , "imports": {"runfiles_list": ["./", "../..", "field_runfiles_list"]} , "expression": { "type": "let*" , "bindings": [ [ "stage" , { "type": "join" , "separator": "/" , "$1": {"type": "FIELD", "name": "stage"} } ] , [ "artifacts" , { "type": "to_subdir" , "subdir": {"type": "var", "name": "stage"} , "$1": { "type": "map_union" , "$1": { "type": "++" , "$1": [ { "type": "let*" , "bindings": [["fieldname", "proto-deps"]] , "body": {"type": "CALL_EXPRESSION", "name": "runfiles_list"} } , { "type": "foreach" , "var": "x" , "range": {"type": "FIELD", "name": "proto-deps"} , "body": { "type": "DEP_PROVIDES" , "provider": "compile-deps" , "dep": {"type": "var", "name": "x"} , "default": { "type": "fail" , "msg": [ "Expected a library target, but got:" , {"type": "var", "name": "x"} ] } } } , { "type": "let*" , "bindings": [["fieldname", "deps"]] , "body": {"type": "CALL_EXPRESSION", "name": "runfiles_list"} } , { "type": "foreach" , "var": "x" , "range": {"type": "FIELD", "name": "deps"} , "body": { "type": "DEP_PROVIDES" , "provider": "compile-deps" , "dep": {"type": "var", "name": "x"} , "default": { "type": "fail" , "msg": [ "Expected a library target, but got:" , {"type": "var", "name": "x"} ] } } } ] } } } ] ] , "body": { "type": "RESULT" , "artifacts": {"type": "var", "name": "artifacts"} , "runfiles": {"type": "var", "name": "artifacts"} } } } }