@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
70 lines • 3.27 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = exports.readClient = exports.collectClients = void 0;
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(generatorFileName) {
const clientsDirPath = path.join(__dirname, GENERATORS_DIR_NAME);
return (0, fs_1.readdirSync)(clientsDirPath).map((clientDirName) => {
return readClient(clientsDirPath, clientDirName, generatorFileName);
});
}
exports.collectClients = collectClients;
/**
* @alpha
*/
function readClient(clientsDirPath, clientDirName, generatorFileName) {
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), generatorFileName)
};
}
exports.readClient = readClient;
function generate(generatorName, subGeneratorName, options, baseDir = __dirname) {
return __awaiter(this, void 0, void 0, function* () {
const env = new YeomanEnvironment();
const { generator } = yield Promise.resolve().then(() => require(path.join(baseDir, GENERATORS_DIR_NAME, generatorName, subGeneratorName)));
env.registerStub(generator, generator.name);
return env.run(generator.name, options);
});
}
exports.generate = generate;
function collectGenerators(generatorsDir, genFileName) {
const dirs = (0, fs_1.readdirSync)(generatorsDir);
return dirs.reduce((generators, name) => {
genFileName = genFileName ? genFileName : GENERATOR_FILE_NAME;
const generatorPath = path.join(generatorsDir, name);
if ((0, fs_1.existsSync)(path.join(generatorPath, genFileName)) && (0, fs_1.statSync)(generatorPath).isDirectory()) {
const generatorExports = require(generatorPath);
if (generatorExports.generator == null) {
return generators;
}
const options = generatorExports.options;
const params = generatorExports.params;
const description = generatorExports.description;
generators.push({ name, options, params, description });
return generators;
}
else {
return generators;
}
}, []);
}
//# sourceMappingURL=init.js.map