UNPKG

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
"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;