UNPKG

liferay-theme-tasks

Version:

A set of tasks for building and deploying Liferay Portal themes.

82 lines (65 loc) 1.66 kB
/** * 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;