ohif-viewer/platform/cli/src/commands/addMode.js

67 lines
1.7 KiB
JavaScript

import Listr from 'listr';
import chalk from 'chalk';
import {
installNPMPackage,
getYarnInfo,
getVersionedPackageName,
validateMode,
addModeToConfig,
findRequiredOhifExtensionsForMode,
} from './utils/index.js';
import addExtensions from './addExtensions.js';
export default async function addMode(packageName, version) {
console.log(chalk.green.bold(`Adding ohif-mode ${packageName}...`));
const versionedPackageName = getVersionedPackageName(packageName, version);
const tasks = new Listr(
[
{
title: `Searching for mode: ${versionedPackageName}`,
task: async () => await validateMode(packageName, version),
},
{
title: `Installing npm package: ${versionedPackageName}`,
task: async () => await installNPMPackage(packageName, version),
},
{
title: 'Adding ohif-mode to the configuration file',
task: async ctx => {
const yarnInfo = await getYarnInfo(packageName);
addModeToConfig(packageName, yarnInfo);
ctx.yarnInfo = yarnInfo;
},
},
{
title: 'Detecting required ohif-extensions...',
task: async ctx => {
ctx.ohifExtensions = await findRequiredOhifExtensionsForMode(ctx.yarnInfo);
},
},
],
{
exitOnError: true,
}
);
await tasks
.run()
.then(async ctx => {
console.log(`${chalk.green.bold(`Added ohif-mode ${packageName}@${ctx.yarnInfo.version}`)} `);
const ohifExtensions = ctx.ohifExtensions;
if (ohifExtensions.length) {
console.log(`${chalk.green.bold(`Installing dependent extensions`)} `);
await addExtensions(ohifExtensions);
}
})
.catch(error => {
console.log(error.message);
});
}