UNPKG

@cuba-platform/front-generator

Version:
70 lines 3.27 kB
"use strict"; 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