a2r
Version:
A2R Framework
80 lines (79 loc) • 4.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const execa_1 = __importDefault(require("execa"));
const getLatestVersion_1 = __importDefault(require("./getLatestVersion"));
const colors_1 = require("./colors");
const settings_1 = require("./settings");
const getCleanProjectName_1 = __importDefault(require("./getCleanProjectName"));
const docker_1 = require("./docker");
const package_json_1 = __importDefault(require("../package.json"));
const settings_2 = require("../settings");
const update = async (info) => {
const { options } = info;
const latestVersion = await (0, getLatestVersion_1.default)();
const { version: currentVersion } = package_json_1.default;
if (!options.force && latestVersion === currentVersion) {
(0, colors_1.log)(`Your project is already using the latest version (${(0, colors_1.version)(currentVersion)}) of ${colors_1.framework} 👌`);
}
else {
(0, colors_1.log)(`>>> Updating project from ${(0, colors_1.version)(currentVersion)} to ${(0, colors_1.version)(latestVersion)}.`);
await (0, execa_1.default)('npm', ['install', `a2r@${latestVersion}`, '--save'], {
stdout: process.stdout,
stderr: process.stderr,
});
(0, colors_1.log)(`>>> Uninstalling from server, just in case (would cause problems)`);
await (0, execa_1.default)('npm', ['uninstall', `a2r`, '--save', '--prefix', './server'], {
stdout: process.stdout,
stderr: process.stderr,
});
const settings = await (0, settings_1.getSettings)();
await Promise.all(settings.projects.map(async (p) => {
(0, colors_1.log)(`>>> Updating ${p.path}`);
await (0, execa_1.default)('npm', ['install', `a2r@${latestVersion}`, '--save-dev', '--prefix', `./${p.path}`], {
stdout: process.stdout,
stderr: process.stderr,
});
}));
(0, colors_1.log)('>>> Removing old docker images');
const devServerImage = 'public.ecr.aws/r7l7n8i7/acttoreact/server-dev:latest';
if (await (0, docker_1.imageExists)(devServerImage)) {
await (0, docker_1.removeImage)(devServerImage);
}
const serverImage = 'public.ecr.aws/r7l7n8i7/acttoreact/server:latest';
if (await (0, docker_1.imageExists)(serverImage)) {
await (0, docker_1.removeImage)(serverImage);
}
settings.server = Object.assign(Object.assign(Object.assign({}, settings_1.defaultServer), settings.server), { env: Object.assign(Object.assign({}, settings_1.defaultServer.env), (settings.server.env || {})) });
settings.devServer = Object.assign(Object.assign(Object.assign({}, settings_1.defaultDevServer), settings.devServer), { env: Object.assign(Object.assign({}, settings_1.defaultDevServer.env), (settings.devServer.env || {})) });
const cleanProjectName = await (0, getCleanProjectName_1.default)();
if (!settings.projectName) {
settings.projectName = cleanProjectName;
}
settings.projects = settings.projects.map((p) => {
if (p.type === 'next') {
return Object.assign({ dockerBase: settings_2.defaultDockerImage, dockerWorkingDir: settings_2.defaultDockerWorkDir, dockerName: `${cleanProjectName}-${p.path}` }, p);
}
return p;
});
settings.version = latestVersion;
await (0, settings_1.saveSettings)(settings);
(0, colors_1.log)(`>>> Project updated to ${(0, colors_1.version)(latestVersion)}.`);
}
};
const command = {
run: update,
name: 'update',
description: `Updates the project to the last version of ${colors_1.framework}`,
args: [
{
name: 'force',
description: 'Update without checking current version',
type: Boolean,
typeLabel: ' ',
},
],
};
exports.default = command;