UNPKG

serverless

Version:

Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more

63 lines (52 loc) 1.58 kB
'use strict'; const BbPromise = require('bluebird'); const chalk = require('chalk'); const pluginUtils = require('./lib/utils'); class PluginSearch { constructor(serverless, options) { this.serverless = serverless; this.options = options; Object.assign(this, pluginUtils); this.commands = { plugin: { commands: { search: { usage: 'Search for plugins', lifecycleEvents: ['search'], options: { query: { usage: 'Search query', required: true, shortcut: 'q', }, }, }, }, }, }; this.hooks = { 'plugin:search:search': () => BbPromise.bind(this).then(this.search), }; } search() { return BbPromise.bind(this) .then(this.getPlugins) .then((plugins) => { // filter out plugins which match the query const regex = new RegExp(this.options.query); const filteredPlugins = plugins.filter( (plugin) => plugin.name.match(regex) || plugin.description.match(regex) ); // print a message with the search result const pluginCount = filteredPlugins.length; const query = this.options.query; const message = `${pluginCount} plugin(s) found for your search query "${query}"\n`; this.serverless.cli.consoleLog(chalk.yellow(message)); return filteredPlugins; }) .then((plugins) => { this.display(plugins); }); } } module.exports = PluginSearch;