snyk-mvn-plugin
Version:
Snyk CLI Maven plugin
61 lines • 2.27 kB
JavaScript
;
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