UNPKG

2.99 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12const fs_1 = require("fs");
13const YeomanEnvironment = require("yeoman-environment");
14const path = require("path");
15const GENERATORS_DIR_NAME = 'generators';
16const GENERATOR_FILE_NAME = 'index.js';
17const INFO_FILE_NAME = 'info.json';
18function collectClients(generatorFileName) {
19 const clientsDirPath = path.join(__dirname, GENERATORS_DIR_NAME);
20 return fs_1.readdirSync(clientsDirPath).map((clientDirName) => {
21 const info = require(path.join(clientsDirPath, clientDirName, INFO_FILE_NAME));
22 return {
23 bundled: true,
24 name: clientDirName,
25 bower: info.bower,
26 clientBaseTech: info.clientBaseTech,
27 generators: collectGenerators(path.join(clientsDirPath, clientDirName), generatorFileName)
28 };
29 });
30}
31exports.collectClients = collectClients;
32function generate(generatorName, subGeneratorName, options) {
33 return __awaiter(this, void 0, void 0, function* () {
34 const env = new YeomanEnvironment();
35 const { generator } = yield Promise.resolve().then(() => require(path.join(__dirname, GENERATORS_DIR_NAME, generatorName, subGeneratorName)));
36 env.registerStub(generator, generator.name);
37 return env.run(generator.name, options);
38 });
39}
40exports.generate = generate;
41function collectGenerators(generatorsDir, genFileName) {
42 const dirs = fs_1.readdirSync(generatorsDir);
43 return dirs.reduce((generators, name) => {
44 genFileName = genFileName ? genFileName : GENERATOR_FILE_NAME;
45 const generatorPath = path.join(generatorsDir, name);
46 if (fs_1.existsSync(path.join(generatorPath, genFileName)) && fs_1.statSync(generatorPath).isDirectory()) {
47 const generatorExports = require(generatorPath);
48 if (generatorExports.generator == null) {
49 return generators;
50 }
51 const options = generatorExports.options;
52 const params = generatorExports.params;
53 const description = generatorExports.description;
54 generators.push({ name, options, params, description });
55 return generators;
56 }
57 else {
58 return generators;
59 }
60 }, []);
61}
62//# sourceMappingURL=init.js.map
\No newline at end of file