From 519a76a6dc4d37810989b886973ea67ccf1ebc18 Mon Sep 17 00:00:00 2001 From: Frank Viernau Date: Wed, 11 Sep 2024 16:30:12 +0200 Subject: [PATCH] refactor(yarn2): Port `isCorepackEnabledInManifest()` to KxS Signed-off-by: Frank Viernau --- .../node/src/main/kotlin/PackageJson.kt | 1 + .../node/src/main/kotlin/yarn2/Yarn2.kt | 10 ++-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/plugins/package-managers/node/src/main/kotlin/PackageJson.kt b/plugins/package-managers/node/src/main/kotlin/PackageJson.kt index 37fd3c6b58c20..b2723ff401c7f 100644 --- a/plugins/package-managers/node/src/main/kotlin/PackageJson.kt +++ b/plugins/package-managers/node/src/main/kotlin/PackageJson.kt @@ -105,6 +105,7 @@ data class PackageJson( val from: String? = null, @SerialName("_integrity") val integrity: String? = null, + val packageManager: String? = null, /** This property does not belong to package.json but to the JSON returned by 'npm info'. */ val dist: Distribution? = null ) { diff --git a/plugins/package-managers/node/src/main/kotlin/yarn2/Yarn2.kt b/plugins/package-managers/node/src/main/kotlin/yarn2/Yarn2.kt index 5c7c7883f509d..75dee68938b19 100644 --- a/plugins/package-managers/node/src/main/kotlin/yarn2/Yarn2.kt +++ b/plugins/package-managers/node/src/main/kotlin/yarn2/Yarn2.kt @@ -19,8 +19,6 @@ package org.ossreviewtoolkit.plugins.packagemanagers.node.yarn2 -import com.fasterxml.jackson.module.kotlin.contains - import java.io.File import kotlinx.coroutines.Dispatchers @@ -130,11 +128,6 @@ class Yarn2( */ private const val MANIFEST_FILE = "package.json" - /** - * The name of the property that defines the package manager and its version if Corepack is enabled. - */ - private const val PACKAGE_MANAGER_PROPERTY = "packageManager" - /** * The name of the default executable. This is used when the [OPTION_COREPACK_OVERRIDE] option is set. */ @@ -146,7 +139,8 @@ class Yarn2( */ private fun isCorepackEnabledInManifest(workingDir: File): Boolean = runCatching { - PACKAGE_MANAGER_PROPERTY in jsonMapper.readTree(workingDir.resolve(MANIFEST_FILE)) + val packageJson = parsePackageJson(workingDir.resolve(MANIFEST_FILE)) + !packageJson.packageManager.isNullOrEmpty() }.getOrDefault(false) }