@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
61 lines • 2.77 kB
JavaScript
;
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 fs_1 = require("fs");
const YeomanEnvironment = require("yeoman-environment");
const path = require("path");
const GENERATORS_DIR_NAME = 'generators';
const GENERATOR_FILE_NAME = 'index.js';
const INFO_FILE_NAME = 'info.json';
function collectClients() {
const clientsDirPath = path.join(__dirname, GENERATORS_DIR_NAME);
return fs_1.readdirSync(clientsDirPath).map((clientDirName) => {
const info = require(path.join(clientsDirPath, clientDirName, INFO_FILE_NAME));
return {
bundled: true,
name: clientDirName,
bower: info.bower,
clientBaseTech: info.clientBaseTech,
generators: collectGenerators(path.join(clientsDirPath, clientDirName))
};
});
}
exports.collectClients = collectClients;
function generate(generatorName, subGeneratorName, options) {
return __awaiter(this, void 0, void 0, function* () {
const env = new YeomanEnvironment();
const { generator } = yield Promise.resolve().then(() => require(path.join(__dirname, GENERATORS_DIR_NAME, generatorName, subGeneratorName)));
env.registerStub(generator, generator.name);
env.run(generator.name, options);
});
}
exports.generate = generate;
function collectGenerators(generatorsDir) {
const dirs = fs_1.readdirSync(generatorsDir);
return dirs.reduce((generators, name) => {
const generatorPath = path.join(generatorsDir, name);
if (fs_1.existsSync(generatorPath)
&& fs_1.existsSync(path.join(generatorPath, GENERATOR_FILE_NAME))
&& fs_1.statSync(generatorPath).isDirectory()) {
const generatorExports = require(generatorPath);
if (generatorExports.generator == null) {
return generators;
}
const options = generatorExports.options;
const params = generatorExports.params;
generators.push({ name, options, params });
return generators;
}
else {
return generators;
}
}, []);
}
//# sourceMappingURL=init.js.map