@@ -24,20 +24,24 @@ class BazelQueryService(
24
24
) : KoinComponent {
25
25
private val logger: Logger by inject()
26
26
27
- suspend fun query (query : String , useCquery : Boolean = false): List <Build .Target > {
27
+ suspend fun query (
28
+ query : String ,
29
+ useCquery : Boolean = false,
30
+ supressFailure : Boolean = false)
31
+ : List <Build .Target > {
28
32
// Unfortunately, there is still no direct way to tell if a target is compatible or not with the proto output
29
33
// by itself. So we do an extra cquery with the trick at
30
34
// https://bazel.build/extending/platforms#cquery-incompatible-target-detection to first find all compatible
31
35
// targets.
32
36
val compatibleTargetSet =
33
37
if (useCquery) {
34
- runQuery(query, useCquery = true , outputCompatibleTargets = true ).useLines {
38
+ runQuery(query, useCquery = true , outputCompatibleTargets = true , supressFailure = supressFailure ).useLines {
35
39
it.filter { it.isNotBlank() }.toSet()
36
40
}
37
41
} else {
38
42
emptySet()
39
43
}
40
- val outputFile = runQuery(query, useCquery)
44
+ val outputFile = runQuery(query, useCquery, supressFailure = supressFailure )
41
45
42
46
val targets = outputFile.inputStream().buffered().use { proto ->
43
47
if (useCquery) {
@@ -58,7 +62,12 @@ class BazelQueryService(
58
62
}
59
63
60
64
@OptIn(ExperimentalCoroutinesApi ::class )
61
- private suspend fun runQuery (query : String , useCquery : Boolean , outputCompatibleTargets : Boolean = false): File {
65
+ private suspend fun runQuery (
66
+ query : String ,
67
+ useCquery : Boolean ,
68
+ outputCompatibleTargets : Boolean = false,
69
+ supressFailure : Boolean = false
70
+ ): File {
62
71
val queryFile = Files .createTempFile(null , " .txt" ).toFile()
63
72
queryFile.deleteOnExit()
64
73
val outputFile = Files .createTempFile(null , " .bin" ).toFile()
@@ -139,7 +148,9 @@ class BazelQueryService(
139
148
)
140
149
}
141
150
142
- if (result.resultCode != 0 ) throw RuntimeException (" Bazel query failed, exit code ${result.resultCode} " )
151
+ if (! supressFailure && result.resultCode != 0 ) {
152
+ throw RuntimeException (" Bazel query failed, exit code ${result.resultCode} " )
153
+ }
143
154
return outputFile
144
155
}
145
156
}
0 commit comments