1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4 |
|
5 | var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6 |
|
7 | _Object$defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 |
|
11 | exports.default = void 0;
|
12 |
|
13 | var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
14 |
|
15 | var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
16 |
|
17 | var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
18 |
|
19 | var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
20 |
|
21 | var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
22 |
|
23 | var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
24 |
|
25 | var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
26 |
|
27 | var _fs = _interopRequireDefault(require("fs"));
|
28 |
|
29 | var _path = _interopRequireDefault(require("path"));
|
30 |
|
31 | var _inquirer = _interopRequireDefault(require("inquirer"));
|
32 |
|
33 | var _handlebars = _interopRequireDefault(require("handlebars"));
|
34 |
|
35 | var _lodash = _interopRequireDefault(require("lodash.get"));
|
36 |
|
37 | var _resolve = _interopRequireDefault(require("resolve"));
|
38 |
|
39 | var _bakedInHelpers = _interopRequireDefault(require("./baked-in-helpers"));
|
40 |
|
41 | var _generatorRunner = _interopRequireDefault(require("./generator-runner"));
|
42 |
|
43 | function nodePlop(plopfilePath = '', plopCfg = {}) {
|
44 | let pkgJson = {};
|
45 | let defaultInclude = {
|
46 | generators: true
|
47 | };
|
48 | let welcomeMessage;
|
49 | const {
|
50 | destBasePath,
|
51 | force
|
52 | } = plopCfg;
|
53 | const generators = {};
|
54 | const partials = {};
|
55 | const actionTypes = {};
|
56 | const helpers = (0, _assign.default)({
|
57 | pkg: propertyPath => (0, _lodash.default)(pkgJson, propertyPath, '')
|
58 | }, _bakedInHelpers.default);
|
59 | const baseHelpers = (0, _keys.default)(helpers);
|
60 | const setPrompt = _inquirer.default.registerPrompt;
|
61 |
|
62 | const setWelcomeMessage = message => {
|
63 | welcomeMessage = message;
|
64 | };
|
65 |
|
66 | const setHelper = (name, fn) => {
|
67 | helpers[name] = fn;
|
68 | };
|
69 |
|
70 | const setPartial = (name, str) => {
|
71 | partials[name] = str;
|
72 | };
|
73 |
|
74 | const setActionType = (name, fn) => {
|
75 | actionTypes[name] = fn;
|
76 | };
|
77 |
|
78 | function renderString(template, data) {
|
79 | var _context, _context2;
|
80 |
|
81 | (0, _forEach.default)(_context = (0, _keys.default)(helpers)).call(_context, h => _handlebars.default.registerHelper(h, helpers[h]));
|
82 | (0, _forEach.default)(_context2 = (0, _keys.default)(partials)).call(_context2, p => _handlebars.default.registerPartial(p, partials[p]));
|
83 | return _handlebars.default.compile(template)(data);
|
84 | }
|
85 |
|
86 | const getWelcomeMessage = () => welcomeMessage;
|
87 |
|
88 | const getHelper = name => helpers[name];
|
89 |
|
90 | const getPartial = name => partials[name];
|
91 |
|
92 | const getActionType = name => actionTypes[name];
|
93 |
|
94 | const getGenerator = name => generators[name];
|
95 |
|
96 | function setGenerator(name = '', config = {}) {
|
97 |
|
98 | name = name || `generator-${(0, _keys.default)(generators).length + 1}`;
|
99 |
|
100 | generators[name] = (0, _assign.default)(config, {
|
101 | name: name,
|
102 | basePath: plopfilePath
|
103 | });
|
104 | return generators[name];
|
105 | }
|
106 |
|
107 | const getHelperList = () => {
|
108 | var _context3;
|
109 |
|
110 | return (0, _filter.default)(_context3 = (0, _keys.default)(helpers)).call(_context3, h => !(0, _includes.default)(baseHelpers).call(baseHelpers, h));
|
111 | };
|
112 |
|
113 | const getPartialList = () => (0, _keys.default)(partials);
|
114 |
|
115 | const getActionTypeList = () => (0, _keys.default)(actionTypes);
|
116 |
|
117 | function getGeneratorList() {
|
118 | var _context4;
|
119 |
|
120 | return (0, _map.default)(_context4 = (0, _keys.default)(generators)).call(_context4, function (name) {
|
121 | const {
|
122 | description
|
123 | } = generators[name];
|
124 | return {
|
125 | name,
|
126 | description
|
127 | };
|
128 | });
|
129 | }
|
130 |
|
131 | const setDefaultInclude = inc => defaultInclude = inc;
|
132 |
|
133 | const getDefaultInclude = () => defaultInclude;
|
134 |
|
135 | const getDestBasePath = () => destBasePath || plopfilePath;
|
136 |
|
137 | const getPlopfilePath = () => plopfilePath;
|
138 |
|
139 | const setPlopfilePath = filePath => {
|
140 | const pathStats = _fs.default.statSync(filePath);
|
141 |
|
142 | if (pathStats.isFile()) {
|
143 | plopfilePath = _path.default.dirname(filePath);
|
144 | } else {
|
145 | plopfilePath = filePath;
|
146 | }
|
147 | };
|
148 |
|
149 | function load(targets, loadCfg = {}, includeOverride) {
|
150 | if (typeof targets === 'string') {
|
151 | targets = [targets];
|
152 | }
|
153 |
|
154 | const config = (0, _assign.default)({
|
155 | destBasePath: getDestBasePath()
|
156 | }, loadCfg);
|
157 | (0, _forEach.default)(targets).call(targets, function (target) {
|
158 | var _context5;
|
159 |
|
160 | const targetPath = _resolve.default.sync(target, {
|
161 | basedir: getPlopfilePath()
|
162 | });
|
163 |
|
164 | const proxy = nodePlop(targetPath, config);
|
165 | const proxyDefaultInclude = proxy.getDefaultInclude() || {};
|
166 | const includeCfg = includeOverride || proxyDefaultInclude;
|
167 | const include = (0, _assign.default)({
|
168 | generators: false,
|
169 | helpers: false,
|
170 | partials: false,
|
171 | actionTypes: false
|
172 | }, includeCfg);
|
173 | const genNameList = (0, _map.default)(_context5 = proxy.getGeneratorList()).call(_context5, g => g.name);
|
174 | loadAsset(genNameList, include.generators, setGenerator, proxyName => ({
|
175 | proxyName,
|
176 | proxy
|
177 | }));
|
178 | loadAsset(proxy.getPartialList(), include.partials, setPartial, proxy.getPartial);
|
179 | loadAsset(proxy.getHelperList(), include.helpers, setHelper, proxy.getHelper);
|
180 | loadAsset(proxy.getActionTypeList(), include.actionTypes, setActionType, proxy.getActionType);
|
181 | });
|
182 | }
|
183 |
|
184 | function loadAsset(nameList, include, addFunc, getFunc) {
|
185 | var incArr;
|
186 |
|
187 | if (include === true) {
|
188 | incArr = nameList;
|
189 | }
|
190 |
|
191 | if (include instanceof Array) {
|
192 | incArr = (0, _filter.default)(include).call(include, n => typeof n === 'string');
|
193 | }
|
194 |
|
195 | if (incArr != null) {
|
196 | include = (0, _reduce.default)(incArr).call(incArr, function (inc, name) {
|
197 | inc[name] = name;
|
198 | return inc;
|
199 | }, {});
|
200 | }
|
201 |
|
202 | if (include instanceof Object) {
|
203 | var _context6;
|
204 |
|
205 | (0, _forEach.default)(_context6 = (0, _keys.default)(include)).call(_context6, i => addFunc(include[i], getFunc(i)));
|
206 | }
|
207 | }
|
208 |
|
209 | function loadPackageJson() {
|
210 |
|
211 | try {
|
212 | pkgJson = require(_path.default.join(getDestBasePath(), 'package.json'));
|
213 | } catch (error) {
|
214 | pkgJson = {};
|
215 | }
|
216 | }
|
217 |
|
218 |
|
219 |
|
220 |
|
221 |
|
222 |
|
223 | const plopfileApi = {
|
224 |
|
225 | setPrompt,
|
226 | setWelcomeMessage,
|
227 | getWelcomeMessage,
|
228 | setGenerator,
|
229 | getGenerator,
|
230 | getGeneratorList,
|
231 | setPartial,
|
232 | getPartial,
|
233 | getPartialList,
|
234 | setHelper,
|
235 | getHelper,
|
236 | getHelperList,
|
237 | setActionType,
|
238 | getActionType,
|
239 | getActionTypeList,
|
240 |
|
241 | setPlopfilePath,
|
242 | getPlopfilePath,
|
243 | getDestBasePath,
|
244 |
|
245 | load,
|
246 | setDefaultInclude,
|
247 | getDefaultInclude,
|
248 |
|
249 | renderString,
|
250 |
|
251 | inquirer: _inquirer.default,
|
252 | handlebars: _handlebars.default,
|
253 |
|
254 | addPrompt: setPrompt,
|
255 | addPartial: setPartial,
|
256 | addHelper: setHelper
|
257 | };
|
258 |
|
259 | const runner = (0, _generatorRunner.default)(plopfileApi, {
|
260 | force
|
261 | });
|
262 | const nodePlopApi = (0, _assign.default)({}, plopfileApi, {
|
263 | getGenerator(name) {
|
264 | var generator = plopfileApi.getGenerator(name);
|
265 |
|
266 | if (generator == null) {
|
267 | throw Error(`Generator "${name}" does not exist.`);
|
268 | }
|
269 |
|
270 |
|
271 |
|
272 | if (generator.proxy) {
|
273 | return generator.proxy.getGenerator(generator.proxyName);
|
274 | }
|
275 |
|
276 | return (0, _assign.default)({}, generator, {
|
277 | runActions: (data, hooks) => runner.runGeneratorActions(generator, data, hooks),
|
278 | runPrompts: (bypassArr = []) => runner.runGeneratorPrompts(generator, bypassArr)
|
279 | });
|
280 | },
|
281 |
|
282 | setGenerator(name, config) {
|
283 | const g = plopfileApi.setGenerator(name, config);
|
284 | return this.getGenerator(g.name);
|
285 | }
|
286 |
|
287 | });
|
288 |
|
289 | if (plopfilePath) {
|
290 | plopfilePath = _path.default.resolve(plopfilePath);
|
291 |
|
292 | const plopFileName = _path.default.basename(plopfilePath);
|
293 |
|
294 | setPlopfilePath(plopfilePath);
|
295 | loadPackageJson();
|
296 |
|
297 | const plopFileExport = require(_path.default.join(plopfilePath, plopFileName));
|
298 |
|
299 | const plop = typeof plopFileExport === 'function' ? plopFileExport : plopFileExport.default;
|
300 | plop(plopfileApi, plopCfg);
|
301 | } else {
|
302 | setPlopfilePath(process.cwd());
|
303 | loadPackageJson();
|
304 | }
|
305 |
|
306 | return nodePlopApi;
|
307 | }
|
308 |
|
309 | var _default = nodePlop;
|
310 | exports.default = _default; |
\ | No newline at end of file |