force-package-manager
Version:
A Command Line Tool to avoid that different team members use different package managers by accident, and therefor mess up your repository.
80 lines (79 loc) • 4.97 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getWantedPackageManagerVersion = void 0;
var cheese_log_1 = require("cheese-log");
var semver_1 = require("semver");
var identify_package_manager_1 = require("identify-package-manager");
var log_1 = require("./log");
var getWantedPackageManagerVersion = function (outputMode, pkgMngrVersionFromArgs) {
(0, log_1.log)(outputMode, "verbose", "", "\t\tWas the package manager version restricted via command line?");
var semverRangeFromArgs;
if (pkgMngrVersionFromArgs) {
if (!(0, semver_1.validRange)(pkgMngrVersionFromArgs)) {
(0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "\t\t\u2192 Yes, but value is invalid: '".concat(pkgMngrVersionFromArgs, "', but it must be a valid semver version range"));
throw new Error("A semver version/range was provided via command line arguments, but it is not valid: ".concat(pkgMngrVersionFromArgs));
}
else {
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.green, "\t\t\u2192 Yes: '".concat(pkgMngrVersionFromArgs, "'"));
semverRangeFromArgs = pkgMngrVersionFromArgs;
}
}
else {
(0, log_1.log)(outputMode, "verbose", "", "\t\t\u2192 No.");
}
(0, log_1.log)(outputMode, "verbose", "", "\t\tDo we have a version of the project's package manager?");
var version = (0, identify_package_manager_1.identifyPackageManager)(false).version;
var simpleVersion = version === null || version === void 0 ? void 0 : version.simple;
if (simpleVersion) {
if (!(0, semver_1.validRange)(simpleVersion)) {
(0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "\t\t\u2192 Yes, but it is not a valid semver version range: '".concat(simpleVersion, "'"));
throw new Error("The semver version range that was retrieved is not valid: ".concat(simpleVersion));
}
else {
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.green, "\t\t\u2192 Yes: '".concat(simpleVersion, "'"));
}
}
else {
if (semverRangeFromArgs) {
(0, log_1.log)(outputMode, "verbose", "", "\t\t\u2192 No, we only have a range restriction from the command line args");
return semverRangeFromArgs;
}
else {
(0, log_1.log)(outputMode, "verbose", "", "\t\t\u2192 No, we have no version info at all");
return undefined;
}
}
if (simpleVersion) {
var isSpecificVersion = Boolean((0, semver_1.valid)(simpleVersion));
if (semverRangeFromArgs) {
if (isSpecificVersion) {
(0, log_1.log)(outputMode, "verbose", "", "\t\tWe have a given version (".concat(simpleVersion, ") as well as a restriction (").concat(semverRangeFromArgs, "), let's validate if they go together..."));
if (!(0, semver_1.satisfies)(simpleVersion, semverRangeFromArgs)) {
var errorReason = "The project's package manager version is ".concat(simpleVersion, ", but the required semver version range is ").concat(semverRangeFromArgs, "\n\t\tSeems like the project's configuration and the force-package-manager script are having conflicting setups");
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.red, "\t\t\u2192 No. ".concat(errorReason));
throw new Error(errorReason);
}
else {
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.green, "\t\t\u2192 Yes");
return semverRangeFromArgs; // <- return the defined range from args
}
}
else {
(0, log_1.log)(outputMode, "verbose", "", "\t\tWe have a given version range (".concat(simpleVersion, ") as well as a restriction (").concat(semverRangeFromArgs, "), let's validate if they go together..."));
if (!(0, semver_1.subset)(simpleVersion, semverRangeFromArgs)) {
var errorReason = "The project's package manager version range is ".concat(simpleVersion, ", but the required semver version range: '").concat(semverRangeFromArgs, "'\n\t\tSeems like the project's configuration and the force-package-manager script are having conflicting setups");
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.red, "\t\t\u2192 No. ".concat(errorReason));
throw new Error(errorReason);
}
else {
(0, log_1.log)(outputMode, "verbose", cheese_log_1.CheeseColors.green, "\t\t\u2192 Yes");
return simpleVersion; // <- return the smallest allowed range
}
}
}
else {
return simpleVersion;
}
}
};
exports.getWantedPackageManagerVersion = getWantedPackageManagerVersion;