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.

135 lines (134 loc) 8.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.forcePackageManager = void 0; var who_am_i_now_1 = require("who-am-i-now"); var cheese_log_1 = require("cheese-log"); var getWantedPackageManagerName_1 = require("./getWantedPackageManagerName"); var getWantedPackageManagerVersion_1 = require("./getWantedPackageManagerVersion"); var semver_1 = require("semver"); var getRunningPackageManagerInfo_1 = require("./getRunningPackageManagerInfo"); var allowedVerboseModes_1 = require("./allowedVerboseModes"); var log_1 = require("./log"); var cleanLockfiles_1 = require("./cleanLockfiles"); cheese_log_1.cheese.config({ reportGlobalConfigChange: false, reportInitialization: false, showCheeseIcon: false, showLogLevel: false, showDate: false, forceNewlines: false, }); var pkgPrefix = "force-package-manager"; var step1Title = "Step 1/3 - detect wanted package manager"; var step2Title = "Step 2/3 - detect running package manager"; var step3Title = "Step 3/3 - validate running package manager vs. wanted package manager"; var forcePackageManager = function (pkgMngrNameFromArgs, pkgMngrVersionFromArgs, clean, outputMode) { if (outputMode === void 0) { outputMode = "verbose"; } var who = (0, who_am_i_now_1.whoAmINow)(); if (!who.isServerApp) { throw new Error("Library 'force-package-manager' can only be used server side."); } if (!allowedVerboseModes_1.allowedVerboseModes.includes(outputMode)) { throw new Error("Invalid output mode '".concat(outputMode, "', should be one of ").concat(allowedVerboseModes_1.allowedVerboseModes.map(function (o) { return "'".concat(o, "'"); }).join(", "))); } (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "==== ".concat(pkgPrefix, " =====")); var error = ""; ///// Step 1/3 ///// (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t".concat(step1Title, " - START")); var packageManagerName; var packageManagerVersion; try { packageManagerName = (0, getWantedPackageManagerName_1.getWantedPackageManagerName)(outputMode, pkgMngrNameFromArgs); packageManagerVersion = (0, getWantedPackageManagerVersion_1.getWantedPackageManagerVersion)(outputMode, pkgMngrVersionFromArgs); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t\tDetected package manager name:"); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.green, "\t\t".concat(packageManagerName)); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t\tDetected package manager version:"); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.green, "\t\t".concat(packageManagerVersion)); } catch (e) { error = e.message; } if (error) { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "\t".concat(step1Title, " - DONE WITH ERROR")); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.gray, "\t".concat(step2Title, " - SKIPPED")); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.gray, "\t".concat(step3Title, " - SKIPPED")); } else { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t".concat(step1Title, " - DONE")); } ///// Step 2/3 ///// var packageManagerRunning; if (!error) { (0, log_1.log)(outputMode, "normal", error ? cheese_log_1.CheeseColors.gray : cheese_log_1.CheeseColors.blue, "\t".concat(step2Title, " - START")); try { packageManagerRunning = (0, getRunningPackageManagerInfo_1.getRunningPackageManagerInfo)(); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t\tDetected package manager name:"); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.green, "\t\t".concat(packageManagerRunning.name)); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t\tDetected package manager version:"); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.green, "\t\t".concat(packageManagerRunning.version)); } catch (e) { error = e.message; } if (error) { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "\t".concat(step2Title, " - DONE WITH ERROR")); (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.gray, "\t".concat(step3Title, " - SKIPPED")); } else { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t".concat(step2Title, " - DONE")); } } ///// Step 3/3 ///// if (!error) { (0, log_1.log)(outputMode, "normal", error ? cheese_log_1.CheeseColors.gray : cheese_log_1.CheeseColors.blue, "\t".concat(step3Title, " - START")); var packageManagerNameIsValid = packageManagerRunning.name === packageManagerName; var packageManagerVersionIsValid = !packageManagerVersion ? true : (0, semver_1.satisfies)(packageManagerRunning.version, packageManagerVersion); var isValid = packageManagerNameIsValid && packageManagerVersionIsValid; if (isValid) { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.green, "\t\tPackage manager '".concat(packageManagerRunning.name, "' with version ").concat(packageManagerRunning.version, " is valid!")); if (!packageManagerVersion) { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.yellow, "\t\tWarning: please note that no wanted package manager version/range was provided/retrieved, therefore the version could not be checked!"); } } else { if (packageManagerRunning.name !== packageManagerName) { var errorReason = "\t\tRunning Package manager is '".concat(packageManagerRunning.name, "', but should be '").concat(packageManagerName, "'!"); error = errorReason; (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, errorReason); } else { var errorReason = "\t\tRunning Package manager version is '".concat(packageManagerRunning.version, "', which does not satisfy ").concat(packageManagerVersion, "!"); error = errorReason; (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, errorReason); } } if (error) { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "\t".concat(step3Title, " - DONE WITH ERROR")); } else { (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "\t".concat(step3Title, " - DONE")); } } if (error) { if (clean && packageManagerName) { (0, cleanLockfiles_1.cleanLockfiles)(outputMode, packageManagerName); } else { if (!packageManagerRunning) { try { // this is an additional step, in case error already occurred during step 1 packageManagerRunning = (0, getRunningPackageManagerInfo_1.getRunningPackageManagerInfo)(); } catch (e) { } } if (packageManagerRunning.name !== packageManagerName) { (0, log_1.log)(outputMode, "mute", cheese_log_1.CheeseColors.yellow, "WARNING: since the running package manager (".concat(packageManagerRunning.name, ") is different from the wanted one (").concat(packageManagerName, "), a new lockfile could have just been created. Consider using the script's --clean / -c option to automatically remove it.")); } } (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.red, "SUMMARY: Package Manager Validation Error:"); (0, log_1.log)(outputMode, "mute", cheese_log_1.CheeseColors.red, "".concat(error.replace(/\t/g, ""))); } (0, log_1.log)(outputMode, "normal", cheese_log_1.CheeseColors.blue, "================================="); return !error; }; exports.forcePackageManager = forcePackageManager;