@liferay/generator-js
Version:
Yeoman generators for Liferay DXP and Portal CE JavaScript projects.
121 lines (120 loc) • 4.31 kB
JavaScript
"use strict";
/**
* SPDX-FileCopyrightText: © 2017 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: LGPL-3.0-or-later
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateLabels = exports.generateSignature = exports.generateSamples = exports.generateContext = exports.install = exports.prompting = exports.initializing = void 0;
const __1 = require("..");
const sample_generator_1 = __importDefault(require("../../facet-configuration/sample-generator"));
const sample_generator_2 = __importDefault(require("../../facet-localization/sample-generator"));
const ProjectAnalyzer_1 = __importDefault(require("../ProjectAnalyzer"));
const styles_css_1 = __importDefault(require("../modifier/assets/css/styles.css"));
/**
*
* @param {Generator} generator
*/
function initializing(generator) {
generator.composeWith(require.resolve('../../facet-project'));
generator.composeWith(require.resolve('../../facet-localization'));
generator.composeWith(require.resolve('../../facet-configuration'));
generator.composeWith(require.resolve('../../facet-portlet'));
generator.composeWith(require.resolve('../../facet-deploy'));
generator.composeWith(require.resolve('../../facet-start'));
}
exports.initializing = initializing;
/**
*
* @param {Generator} generator
* @param {string} namespace
*/
async function prompting(generator) {
generator.answers = generator.answers || {};
Object.assign(generator.answers, await __1.promptWithConfig(generator, [
{
default: false,
message: 'Do you want to generate sample code?',
name: 'sampleWanted',
type: 'confirm',
},
]));
}
exports.prompting = prompting;
/**
*
* @param {Generator} generator
*/
function install(generator) {
generator.installDependencies({
bower: false,
skipInstall: generator.options['skip-install'],
skipMessage: generator.options['skip-install-message'],
});
}
exports.install = install;
/**
* Generate the base template context used for generation.
* @param {object} generator
* @param {object} extra extra fields to add to the context
* @return {object}
*/
function generateContext(generator, extra = {}) {
const projectAnalyzer = new ProjectAnalyzer_1.default(generator);
return {
hasConfiguration: projectAnalyzer.hasConfiguration,
signature: generateSignature(generator),
...extra,
};
}
exports.generateContext = generateContext;
/**
*
* @param {Generator} generator
* @param {object} labels
*/
function generateSamples(generator, labels) {
const stylesCss = new styles_css_1.default(generator);
const { sampleWanted } = generator.answers;
if (sampleWanted) {
// Add styles
stylesCss.addRule('.tag', 'font-weight: bold; margin-right: 1em;');
stylesCss.addRule('.value', 'font-family: monospace;');
stylesCss.addRule('.pre', 'font-family: monospace; white-space: pre;');
// Add localization keys
new sample_generator_2.default(generator).generate(labels.raw);
// Add sample configuration
new sample_generator_1.default(generator).generate();
}
}
exports.generateSamples = generateSamples;
/**
* Generate signature parameter of the entry point
* @param {Generator} generator
* @return {string}
*/
function generateSignature(generator) {
const projectAnalyzer = new ProjectAnalyzer_1.default(generator);
return ('portletNamespace, contextPath, portletElementId' +
(projectAnalyzer.hasConfiguration ? ', configuration' : ''));
}
exports.generateSignature = generateSignature;
/**
* Generate base labels
* @param {Generator} generator
* @return {object}
*/
function generateLabels(generator) {
const projectAnalyzer = new ProjectAnalyzer_1.default(generator);
return __1.formatLabels({
configuration: projectAnalyzer.hasConfiguration
? 'Configuration'
: undefined,
contextPath: 'Context Path',
portletElementId: 'Portlet Element Id',
portletNamespace: 'Portlet Namespace',
});
}
exports.generateLabels = generateLabels;