@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
84 lines • 3.98 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const cli_options_1 = require("../../../common/cli-options");
exports.options = cli_options_1.commonGenerationOptionsConfig;
const path = require("path");
const generation_1 = require("../../../common/generation");
const questions_1 = require("./questions");
const through2 = require("through2");
function createPolymer2AppGenerator(templateDir = path.join(__dirname, 'template')) {
class Polymer2AppGenerator extends generation_1.BaseGenerator {
constructor(args, options) {
super(args, options);
this.registerTransformStream(createRenameTransform(this));
this.sourceRoot(templateDir);
}
// noinspection JSUnusedGlobalSymbols
prompting() {
return __awaiter(this, void 0, void 0, function* () {
if (this.options.model) {
this.conflicter.force = true;
this.log('Skipping prompts since model provided');
return;
}
this.answers = { project: yield this.prompt(questions_1.questions) };
});
}
prepareModel() {
if (this.options.model) {
const projectModel = generation_1.readProjectModel(this.options.model);
this.model = createModel(projectModel.project);
}
else if (this.answers) {
this.model = createModel(this.answers.project);
}
}
// noinspection JSUnusedGlobalSymbols
writing() {
this.log(`Generating to ${this.destinationPath()}`);
if (!this.model) {
throw new Error('Model is not provided');
}
this.fs.copy(this.templatePath() + '/images/**', this.destinationPath('images'));
this.fs.copyTpl(this.templatePath() + '/src/**', this.destinationPath('src'), this.model);
this.fs.copyTpl(this.templatePath() + '/*.*', this.destinationPath(), this.model);
this.fs.copyTpl(this.templatePath('.package-lock.json'), this.destinationPath('package-lock.json'), this.model);
this.fs.copy(this.templatePath('_gitignore'), this.destinationPath('.gitignore'));
}
end() {
this.log(`CUBA Polymer client has been successfully generated into ${this.destinationRoot()}`);
}
}
function createModel(project) {
return {
generatorPackageVersion: process.env.npm_package_version || '0.2.0',
title: project.name,
project: project,
basePath: project.modulePrefix + '-front',
baseColor: '#2196F3',
genClassName: function (suffix) {
return project.namespace[0].toUpperCase() + project.namespace.slice(1) + suffix;
}
};
}
function createRenameTransform(generator) {
return through2.obj(function (file, enc, callback) {
file.basename = file.basename.replace('${project_namespace}', generator.model.project.namespace);
this.push(file);
callback();
});
}
return Polymer2AppGenerator;
}
exports.createPolymer2AppGenerator = createPolymer2AppGenerator;
exports.generator = createPolymer2AppGenerator();
exports.params = [];
//# sourceMappingURL=index.js.map