@@ -31,54 +31,53 @@ def proto(self, name, srcs: Targets = [], deps: Targets = []):
3131 ]
3232 )
3333
34- if srcs :
35- dirs = sorted ({"$[dir]/" + dirname (f ) for f in filenamesof (srcs )})
36- simplerule (
37- replaces = self ,
38- ins = srcs ,
39- outs = [f"={ self .localname } .descriptor" ],
40- deps = protodeps ,
41- commands = (
42- ["mkdir -p " + (" " .join (dirs ))]
43- + [f"$(CP) { f } $[dir]/{ f } " for f in filenamesof (srcs )]
44- + [
45- "cd $[dir] && "
46- + (
47- " " .join (
48- [
49- "$(PROTOC)" ,
50- "--proto_path=." ,
51- "--include_source_info" ,
52- f"--descriptor_set_out={ self .localname } .descriptor" ,
53- ]
54- + (
55- [f"--descriptor_set_in={ descriptorlist } " ]
56- if descriptorlist
57- else []
58- )
59- + ["$[ins]" ]
34+ dirs = sorted ({"$[dir]/" + dirname (f ) for f in filenamesof (srcs )})
35+ simplerule (
36+ replaces = self ,
37+ ins = srcs ,
38+ outs = [f"={ self .localname } .descriptor" ],
39+ deps = protodeps ,
40+ commands = (
41+ ["mkdir -p " + (" " .join (dirs ))]
42+ + [f"$(CP) { f } $[dir]/{ f } " for f in filenamesof (srcs )]
43+ + [
44+ "cd $[dir] && "
45+ + (
46+ " " .join (
47+ [
48+ "$(PROTOC)" ,
49+ "--proto_path=." ,
50+ "--include_source_info" ,
51+ f"--descriptor_set_out={ self .localname } .descriptor" ,
52+ ]
53+ + (
54+ [f"--descriptor_set_in={ descriptorlist } " ]
55+ if descriptorlist
56+ else []
6057 )
58+ + ["$[ins]" ]
6159 )
62- ]
63- ),
64- label = "PROTO" ,
65- args = {
66- "protosrcs" : filenamesof (srcs ),
67- "protodeps" : set (protodeps ) | {self },
68- },
69- )
70- else :
71- simplerule (
72- replaces = self ,
73- ins = protodeps ,
74- outs = ["=stamp" ],
75- commands = ["touch $[outs]" ],
76- label = "PROTO" ,
77- args = {
78- "protosrcs" : [],
79- "protodeps" : set (protodeps ),
80- },
81- )
60+ )
61+ ]
62+ ),
63+ label = "PROTO" ,
64+ args = {
65+ "protosrcs" : filenamesof (srcs ),
66+ "protodeps" : set (protodeps ) | {self },
67+ },
68+ )
69+
70+
71+ @Rule
72+ def protolib (self , name , srcs : Targets = []):
73+ simplerule (
74+ replaces = self ,
75+ label = "PROTOLIB" ,
76+ args = {
77+ "protosrcs" : collectattrs (targets = srcs , name = "protosrcs" ),
78+ "protodeps" : set (_getprotodeps (srcs )),
79+ },
80+ )
8281
8382
8483@Rule
0 commit comments