Skip to content

Commit

Permalink
refactor(CLI): Modern logs for plugin uninstall command
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Sep 28, 2021
1 parent 1a3ccdb commit 3094be0
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 14 deletions.
28 changes: 22 additions & 6 deletions commands/plugin-uninstall.js
Expand Up @@ -8,7 +8,7 @@ const _ = require('lodash');
const isPlainObject = require('type/plain-object/is');
const yaml = require('js-yaml');
const cloudformationSchema = require('@serverless/utils/cloudformation-schema');
const log = require('@serverless/utils/log');
const { legacy, log, progress, style } = require('@serverless/utils/log');
const yamlAstParser = require('../lib/utils/yamlAstParser');
const npmCommandDeferred = require('../lib/utils/npm-command-deferred');
const {
Expand All @@ -17,22 +17,31 @@ const {
validate,
} = require('../lib/commands/plugin-management');

const mainProgress = progress.get('main');

module.exports = async ({ configuration, serviceDir, configurationFilename, options }) => {
const commandRunStartTime = Date.now();
validate({ serviceDir });

const pluginInfo = getPluginInfo(options.name);
const pluginName = pluginInfo.name;
const configurationFilePath = getServerlessFilePath({ serviceDir, configurationFilename });

const context = { configuration, serviceDir, configurationFilePath, pluginName };
mainProgress.notice(`Uninstalling plugin "${pluginName}"`, { isMainEvent: true });
await uninstallPlugin(context);
await removePluginFromServerlessFile(context);

log(`Successfully uninstalled "${pluginName}"`);
legacy.log(`Successfully uninstalled "${pluginName}"`);
log.notice.success(
`Plugin "${pluginName}" uninstalled ${style.aside(
`(${Math.floor((Date.now() - commandRunStartTime) / 1000)}s)`
)}`
);
};

const uninstallPlugin = async ({ serviceDir, pluginName }) => {
log(`Uninstalling plugin "${pluginName}" (this might take a few seconds...)`);
legacy.log(`Uninstalling plugin "${pluginName}" (this might take a few seconds...)`);
await npmUninstall(pluginName, { serviceDir });
};

Expand Down Expand Up @@ -98,13 +107,20 @@ const npmUninstall = async (name, { serviceDir }) => {
stdio: 'pipe',
});
} catch (error) {
process.stdout.write(error.stderrBuffer);
legacy.write(error.stderrBuffer);
log.error(String(error.stderrBuffer));
throw error;
}
};

const requestManualUpdate = (configurationFilePath) =>
log(`
const requestManualUpdate = (configurationFilePath) => {
legacy.log(`
Can't automatically remove plugin from "${path.basename(configurationFilePath)}" file.
Please do it manually.
`);
log.notice.skip(
`Can't automatically remove plugin from "${path.basename(
configurationFilePath
)}" file. Please make it manually.`
);
};
30 changes: 22 additions & 8 deletions lib/plugins/plugin/uninstall.js
Expand Up @@ -11,16 +11,24 @@ const _ = require('lodash');
const isPlainObject = require('type/plain-object/is');
const yaml = require('js-yaml');
const cloudformationSchema = require('@serverless/utils/cloudformation-schema');
const log = require('@serverless/utils/log');
const { legacy, log, progress, style } = require('@serverless/utils/log');
const cliCommandsSchema = require('../../cli/commands-schema');
const yamlAstParser = require('../../utils/yamlAstParser');
const pluginUtils = require('./lib/utils');

const requestManualUpdate = (serverlessFilePath) =>
log(`
const mainProgress = progress.get('main');

const requestManualUpdate = (serverlessFilePath) => {
legacy.log(`
Can't automatically remove plugin from "${path.basename(serverlessFilePath)}" file.
Please make it manually.
`);
log.notice.skip(
`Can't automatically remove plugin from "${path.basename(
serverlessFilePath
)}" file. Please make it manually.`
);
};

class PluginUninstall {
constructor(serverless, options) {
Expand Down Expand Up @@ -54,25 +62,31 @@ class PluginUninstall {
.then((plugins) => {
const plugin = plugins.find((item) => item.name === this.options.pluginName);
if (!plugin) {
this.serverless.cli.log(
'Plugin not found in serverless registry, continuing to uninstall'
);
legacy.log('Plugin not found in serverless registry, continuing to uninstall');
}
return BbPromise.bind(this)
.then(this.uninstallPeerDependencies)
.then(this.pluginUninstall)
.then(this.removePluginFromServerlessFile)
.then(() => {
this.serverless.cli.log(`Successfully uninstalled "${this.options.pluginName}"`);
legacy.log(`Successfully uninstalled "${this.options.pluginName}"`);
log.notice.success(
`Plugin "${this.options.pluginName}" uninstalled ${style.aside(
`(${Math.floor(
(Date.now() - this.serverless.pluginManager.commandRunStartTime) / 1000
)}s)`
)}`
);
return BbPromise.resolve();
});
});
}

async pluginUninstall() {
this.serverless.cli.log(
legacy.log(
`Uninstalling plugin "${this.options.pluginName}" (this might take a few seconds...)`
);
mainProgress.notice(`Uninstalling plugin "${this.options.pluginName}"`, { isMainEvent: true });
return this.npmUninstall(this.options.pluginName);
}

Expand Down

0 comments on commit 3094be0

Please sign in to comment.