@@ -213,6 +213,11 @@ class GoMod(
213
213
val main : Boolean = false
214
214
)
215
215
216
+ private data class DepInfo (
217
+ @JsonProperty(" Module" )
218
+ val module : ModuleInfo ? = null
219
+ )
220
+
216
221
private fun ModuleInfo.toId (): Identifier =
217
222
Identifier (
218
223
type = managerName.takeIf { version.isBlank() } ? : " Go" ,
@@ -273,20 +278,14 @@ class GoMod(
273
278
* Return the module names of all transitive main module dependencies. This excludes test-only dependencies.
274
279
*/
275
280
private fun getTransitiveMainModuleDependencies (projectDir : File ): Set <String > {
276
- val result = mutableSetOf<String >()
277
-
278
281
// See https://pkg.go.dev/text/template for the format syntax.
279
- val list = run (
280
- " list" , " -deps" , " -f" , " {{with .Module}}{{.Path}} {{.Version}}{{end}}" , " -buildvcs=false" , " ./..." ,
281
- workingDir = projectDir
282
- )
282
+ val list = run (" list" , " -deps" , " -json=Module" , " -buildvcs=false" , " ./..." , workingDir = projectDir)
283
283
284
- list.stdout.lines().forEach { line ->
285
- val columns = line.splitOnWhitespace()
286
- if (columns.size in 1 .. 2 ) result + = columns.first()
284
+ return jsonMapper.createParser(list.stdout).use { parser ->
285
+ jsonMapper.readValues<DepInfo >(parser).readAll()
286
+ }.mapNotNullTo(mutableSetOf ()) { depInfo ->
287
+ depInfo.module?.path
287
288
}
288
-
289
- return result
290
289
}
291
290
292
291
private fun ModuleInfo.toPackage (): Package {
0 commit comments