11
11
import re
12
12
13
13
from enum import Enum
14
- from typing import Any , Optional , Sequence
14
+ from typing import Any , List , Optional , Sequence
15
15
16
16
from buck_util import Buck2Runner
17
17
@@ -96,7 +96,12 @@ def __init__(
96
96
else :
97
97
self ._config [k ] = v
98
98
99
- def get_sources (self , graph : "Graph" , runner : Buck2Runner ) -> frozenset [str ]:
99
+ def get_sources (
100
+ self , graph : "Graph" , runner : Buck2Runner , buck_args : Optional [List [str ]]
101
+ ) -> frozenset [str ]:
102
+ if buck_args is None :
103
+ buck_args = []
104
+
100
105
if self ._state == Target ._InitState .READY :
101
106
return self ._sources
102
107
# Detect cycles.
@@ -113,7 +118,7 @@ def get_sources(self, graph: "Graph", runner: Buck2Runner) -> frozenset[str]:
113
118
)
114
119
115
120
# Get the complete list of source files that this target depends on.
116
- sources : set [str ] = set (runner .run (["cquery" , query ]))
121
+ sources : set [str ] = set (runner .run (["cquery" , query ] + buck_args ))
117
122
118
123
# Keep entries that match all of the filters.
119
124
filters = [re .compile (p ) for p in self ._config .get ("filters" , [])]
@@ -128,7 +133,9 @@ def get_sources(self, graph: "Graph", runner: Buck2Runner) -> frozenset[str]:
128
133
# its deps. Remove entries that are already covered by the transitive
129
134
# set of dependencies.
130
135
for dep in self ._config .get ("deps" , []):
131
- sources .difference_update (graph .by_name [dep ].get_sources (graph , runner ))
136
+ sources .difference_update (
137
+ graph .by_name [dep ].get_sources (graph , runner , buck_args )
138
+ )
132
139
133
140
self ._sources = frozenset (sources )
134
141
self ._state = Target ._InitState .READY
@@ -173,6 +180,9 @@ def parse_args() -> argparse.Namespace:
173
180
metavar = "file" ,
174
181
help = "Path to the file to generate." ,
175
182
)
183
+ parser .add_argument (
184
+ "--target-platforms" , help = "--target-platforms to pass to buck cquery, if any."
185
+ )
176
186
return parser .parse_args ()
177
187
178
188
@@ -199,8 +209,12 @@ def main():
199
209
# Run the queries and get the lists of source files.
200
210
target_to_srcs : dict [str , list [str ]] = {}
201
211
runner : Buck2Runner = Buck2Runner (args .buck2 )
212
+ buck_args = []
213
+ if args .target_platforms :
214
+ buck_args = ["--target-platforms" ]
215
+ buck_args .append (args .target_platforms )
202
216
for name , target in graph .by_name .items ():
203
- target_to_srcs [name ] = sorted (target .get_sources (graph , runner ))
217
+ target_to_srcs [name ] = sorted (target .get_sources (graph , runner , buck_args ))
204
218
205
219
# Generate the requested format.
206
220
output : bytes
0 commit comments