liferay-theme-tasks
Version:
A set of tasks for building and deploying Liferay Portal themes.
82 lines (65 loc) • 1.66 kB
JavaScript
/**
* SPDX-FileCopyrightText: © 2017 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: MIT
*/
const colors = require('ansi-colors');
const log = require('fancy-log');
const inquirer = require('inquirer');
const _ = require('lodash');
const themeFinder = require('../lib/theme_finder');
const ModulePrompt = require('./module_prompt');
class NPMModulePrompt {
constructor(...args) {
this.init(...args);
}
init(config, callback) {
this.done = callback;
this.selectedModules = config.selectedModules;
this.themelet = config.themelet;
this._promptSearchTerms();
}
_afterPrompt(answers) {
this.done(answers);
}
_afterPromptSearchTerms(answers) {
const themelet = this.themelet;
this._getNPMModules(answers.searchTerms, (modules) => {
if (_.isEmpty(modules)) {
const type = themelet ? 'themelets' : 'themes';
log(colors.yellow('No ' + type + ' matched your search!'));
this._promptSearchTerms();
}
else {
this.modules = modules;
ModulePrompt.prompt(this, _.bind(this._afterPrompt, this));
}
});
}
_getNPMModules(searchTerms, callback) {
themeFinder.getLiferayThemeModules(
{
globalModules: false,
searchTerms,
themelet: this.themelet,
},
callback
);
}
_promptSearchTerms() {
const themelet = this.themelet;
inquirer.prompt(
[
{
message: themelet
? 'Search npm for themelets:'
: 'Search npm for themes:',
name: 'searchTerms',
},
],
_.bind(this._afterPromptSearchTerms, this)
);
}
}
NPMModulePrompt.prompt = (config, callback) =>
new NPMModulePrompt(config, callback);
module.exports = NPMModulePrompt;