UNPKG

snyk-mvn-plugin

Version:
61 lines 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MAVEN_DEPENDENCY_PLUGIN_VERSION_LEGACY = exports.MAVEN_DEPENDENCY_PLUGIN_VERSION = void 0; exports.getMavenVersion = getMavenVersion; exports.compareVersions = compareVersions; exports.selectPluginVersion = selectPluginVersion; const subProcess = require("../sub-process"); const parse_versions_1 = require("../parse-versions"); // Plugin version 3.9.0 requires Maven 3.6.3+ // Fall back to 3.6.1 for older Maven versions exports.MAVEN_DEPENDENCY_PLUGIN_VERSION = '3.9.0'; exports.MAVEN_DEPENDENCY_PLUGIN_VERSION_LEGACY = '3.6.1'; const MIN_MAVEN_VERSION_FOR_PLUGIN = '3.6.3'; /** * Gets the Maven version by running `mvn --version` */ async function getMavenVersion(context) { const versionResult = await subProcess.execute(context.command, ['--version'], { cwd: context.workingDirectory, }); return (0, parse_versions_1.parseVersions)(versionResult); } /** * Compares two version strings (e.g., "3.6.3" vs "3.9.0") * @returns -1 if a < b, 0 if equal, 1 if a > b */ function compareVersions(a, b) { const partsA = a.split('.').map(Number); const partsB = b.split('.').map(Number); const maxLen = Math.max(partsA.length, partsB.length); for (let i = 0; i < maxLen; i++) { const partA = partsA[i] || 0; const partB = partsB[i] || 0; if (partA < partB) return -1; if (partA > partB) return 1; } return 0; } /** * Extracts the numeric version from Maven version string * e.g., "Apache Maven 3.9.6 (...)" -> "3.9.6" */ function extractMavenVersionNumber(mavenVersion) { const match = mavenVersion.match(/Apache Maven (\d+\.\d+\.\d+)/); return match ? match[1] : null; } /** * Selects the appropriate plugin version based on Maven version * Uses 3.9.0 for Maven 3.6.3+, falls back to 3.6.1 for older versions */ function selectPluginVersion(mavenVersion) { const versionStr = extractMavenVersionNumber(mavenVersion); if (versionStr && compareVersions(versionStr, MIN_MAVEN_VERSION_FOR_PLUGIN) >= 0) { return exports.MAVEN_DEPENDENCY_PLUGIN_VERSION; } return exports.MAVEN_DEPENDENCY_PLUGIN_VERSION_LEGACY; } //# sourceMappingURL=version.js.map