68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
import Listr from 'listr';
|
|||
|
|
import chalk from 'chalk';
|
||
|
|
|
||
|
|
import {
|
||
|
|
uninstallNPMPackage,
|
||
|
|
findOhifExtensionsToRemoveAfterRemovingMode,
|
||
|
|
removeModeFromConfig,
|
||
|
|
validateModeYarnInfo,
|
||
|
|
getYarnInfo,
|
||
|
|
} from './utils/index.js';
|
||
|
|
import removeExtensions from './removeExtensions.js';
|
||
|
|
|
||
|
|
export default async function removeMode(packageName) {
|
||
|
|
console.log(chalk.green.bold(`Removing ohif-mode ${packageName}...`));
|
||
|
|
|
||
|
|
const tasks = new Listr(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
title: `Searching for installed mode: ${packageName}`,
|
||
|
|
task: async ctx => {
|
||
|
|
ctx.yarnInfo = await getYarnInfo(packageName);
|
||
|
|
await validateModeYarnInfo(packageName);
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: `Uninstalling npm package: ${packageName}`,
|
||
|
|
task: async () => await uninstallNPMPackage(packageName),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: 'Removing ohif-mode from the configuration file',
|
||
|
|
task: async () => await removeModeFromConfig(packageName),
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: 'Detecting extensions that can be removed...',
|
||
|
|
task: async ctx => {
|
||
|
|
ctx.ohifExtensionsToRemove = await findOhifExtensionsToRemoveAfterRemovingMode(
|
||
|
|
ctx.yarnInfo
|
||
|
|
);
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
{
|
||
|
|
exitOnError: true,
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
await tasks
|
||
|
|
.run()
|
||
|
|
.then(async ctx => {
|
||
|
|
// Remove extensions if they aren't used by any other mode.
|
||
|
|
console.log(`${chalk.green.bold(`Removed ohif-mode ${packageName}`)} `);
|
||
|
|
|
||
|
|
const ohifExtensionsToRemove = ctx.ohifExtensionsToRemove;
|
||
|
|
|
||
|
|
if (ohifExtensionsToRemove.length) {
|
||
|
|
console.log(
|
||
|
|
`${chalk.green.bold(
|
||
|
|
`Removing ${ohifExtensionsToRemove.length} extensions no longer used by any installed mode`
|
||
|
|
)}`
|
||
|
|
);
|
||
|
|
|
||
|
|
await removeExtensions(ohifExtensionsToRemove);
|
||
|
|
}
|
||
|
|
})
|
||
|
|
.catch(error => {
|
||
|
|
console.log(error.message);
|
||
|
|
});
|
||
|
|
}
|