
Using suggested changes Changes suggested by astorije Upgrade parameter removed and allow multiple packages to upgrade Fixed Minor fix
67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
const colors = require("chalk");
|
|
const program = require("commander");
|
|
const Helper = require("../helper");
|
|
const Utils = require("./utils");
|
|
|
|
program
|
|
.command("upgrade [packages...]")
|
|
.description("Upgrade installed themes and packages to their latest versions.")
|
|
.on("--help", Utils.extraHelp)
|
|
.action(function(packages) {
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
// Get paths to the location of packages directory
|
|
const packagesPath = Helper.getPackagesPath();
|
|
const packagesConfig = path.join(packagesPath, "package.json");
|
|
const packagesList = JSON.parse(fs.readFileSync(packagesConfig)).dependencies;
|
|
const argsList = [
|
|
"upgrade",
|
|
"--latest",
|
|
"--json",
|
|
"--production",
|
|
"--ignore-scripts",
|
|
"--non-interactive",
|
|
"--cwd",
|
|
packagesPath,
|
|
];
|
|
|
|
let count = 0;
|
|
|
|
// Check if the configuration file exists
|
|
if (!fs.existsSync(packagesConfig)) {
|
|
log.warn("There are no packages installed.");
|
|
return;
|
|
}
|
|
|
|
// If a package names are supplied, check they exist
|
|
if (packages.length) {
|
|
log.info("Upgrading the following packages:");
|
|
packages.forEach((p) => {
|
|
log.info(`- ${colors.green(p)}`);
|
|
|
|
if (packagesList.hasOwnProperty(p)) {
|
|
argsList.splice(1, 0, p);
|
|
count++;
|
|
} else {
|
|
log.error(`${colors.green(p)} is not installed.`);
|
|
}
|
|
});
|
|
} else {
|
|
log.info("Upgrading all packages...");
|
|
}
|
|
|
|
if (count === 0 && packages.length) {
|
|
log.warn("There are not any packages to upgrade.");
|
|
return;
|
|
}
|
|
|
|
return Utils.executeYarnCommand(...argsList).then(() => {
|
|
log.info("Package(s) have been successfully upgraded.");
|
|
}).catch((code) => {
|
|
throw `Failed to upgrade package(s). Exit code ${code}`;
|
|
});
|
|
});
|