diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-05-05 16:28:14 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-05-06 05:47:40 +0200 |
commit | 5146c65928fe0f7c57a669f4c8b7815f3793828b (patch) | |
tree | 8d944e93d6ce547186beb9e1eac2bc614b166203 /data/RULES | |
parent | 90e9723f27a165f9d0f36b790ba4da8a1d1d8b7e (diff) | |
download | rules-cc-5146c65928fe0f7c57a669f4c8b7815f3793828b.tar.gz |
["data", "staged"]: support dropping paths
In this way, GLOB constructs can be used more easily. As the dropping
happens early, this can also be used to solve staging conflicts, by
removing that logical path and later add a consolidated artifact to
that path.
Diffstat (limited to 'data/RULES')
-rw-r--r-- | data/RULES | 39 |
1 files changed, 34 insertions, 5 deletions
@@ -1,7 +1,7 @@ { "staged": { "doc": ["Stage data to a logical subdirectory."] , "target_fields": ["srcs", "deps"] - , "string_fields": ["stage"] + , "string_fields": ["stage", "drop"] , "field_doc": { "srcs": ["The files to be staged"] , "stage": @@ -12,9 +12,15 @@ [ "Targets of with their runfiles should be added as well." , "Their staging is not changed." ] + , "drop": + [ "List of paths to drop from (each of) the \"srcs\" targets" + , "before joining and staging. In this way, GLOB constructs can" + , "be used is \"srcs\"." + ] } , "artifacts_doc": - [ "The runfiles of the \"srcs\" targets staged to the directory" + [ "The runfiles and artifacts of the \"srcs\" targets, leaving out" + , "the ones with logical path in \"drop\", staged to the directory" , "specified in \"stage\" together the runfiles of the targets" , "specied in the field \"deps\" (in their original location)." ] @@ -22,6 +28,8 @@ , "imports": { "runfiles": ["./", "..", "field_runfiles"] , "artifacts": ["./", "..", "field_artifacts"] + , "runfiles w/o": "field_artifacts_without" + , "artifacts w/o": "field_artifacts_without" } , "expression": { "type": "let*" @@ -32,15 +40,36 @@ , "$1": {"type": "FIELD", "name": "stage"} } ] + , [ "exclude" + , { "type": "map_union" + , "$1": + { "type": "foreach" + , "range": {"type": "FIELD", "name": "drop"} + , "body": + { "type": "singleton_map" + , "key": {"type": "var", "name": "_"} + , "value": true + } + } + } + ] , [ "srcs" , { "type": "let*" , "bindings": [["fieldname", "srcs"]] , "body": { "type": "map_union" , "$1": - [ {"type": "CALL_EXPRESSION", "name": "runfiles"} - , {"type": "CALL_EXPRESSION", "name": "artifacts"} - ] + { "type": "if" + , "cond": {"type": "var", "name": "exclude"} + , "then": + [ {"type": "CALL_EXPRESSION", "name": "runfiles w/o"} + , {"type": "CALL_EXPRESSION", "name": "artifacts w/o"} + ] + , "else": + [ {"type": "CALL_EXPRESSION", "name": "runfiles"} + , {"type": "CALL_EXPRESSION", "name": "artifacts"} + ] + } } } ] |