UNPKG

liferay-theme-tasks

Version:

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

83 lines (65 loc) 1.6 kB
/** * SPDX-FileCopyrightText: © 2017 Liferay, Inc. <https://liferay.com> * SPDX-License-Identifier: MIT */ const inquirer = require('inquirer'); const _ = require('lodash'); const promptUtil = require('./util'); class ModulePrompt { constructor(...args) { this.init(...args); } init(config, callback) { this.done = callback; this.modules = config.modules; this.selectedModules = config.selectedModules; this.themelet = config.themelet; this._prompt(); } _afterPrompt(answers) { if (this.themelet) { _.assign( answers, promptUtil.formatThemeletSelection( answers.module, this.selectedModules ) ); } answers.modules = this.modules; this.done(answers); } _filterModule(input) { if (this.themelet) { return _.mapValues(this.modules, (theme, name) => { return input.indexOf(name) > -1; }); } return input; } _getModuleChoices() { return promptUtil.getModuleChoices(this.modules, this); } _getModuleWhen() { return !_.isEmpty(this.modules); } _prompt() { const themelet = this.themelet; const listType = promptUtil.getListType(); inquirer.prompt( [ { choices: _.bind(this._getModuleChoices, this), filter: _.bind(this._filterModule, this), message: themelet ? 'Select a themelet' : 'Select a theme', name: 'module', type: themelet ? 'checkbox' : listType, when: _.bind(this._getModuleWhen, this), }, ], _.bind(this._afterPrompt, this) ); } } ModulePrompt.prompt = (config, callback) => new ModulePrompt(config, callback); module.exports = ModulePrompt;