| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
- _Object$defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
- var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
- var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
- var _fs = _interopRequireDefault(require("fs"));
- var _path = _interopRequireDefault(require("path"));
- var _inquirer = _interopRequireDefault(require("inquirer"));
- var _handlebars = _interopRequireDefault(require("handlebars"));
- var _lodash = _interopRequireDefault(require("lodash.get"));
- var _resolve = _interopRequireDefault(require("resolve"));
- var _bakedInHelpers = _interopRequireDefault(require("./baked-in-helpers"));
- var _generatorRunner = _interopRequireDefault(require("./generator-runner"));
- function nodePlop(plopfilePath = '', plopCfg = {}) {
- let pkgJson = {};
- let defaultInclude = {
- generators: true
- };
- let welcomeMessage;
- const {
- destBasePath,
- force
- } = plopCfg;
- const generators = {};
- const partials = {};
- const actionTypes = {};
- const helpers = (0, _assign.default)({
- pkg: propertyPath => (0, _lodash.default)(pkgJson, propertyPath, '')
- }, _bakedInHelpers.default);
- const baseHelpers = (0, _keys.default)(helpers);
- const setPrompt = _inquirer.default.registerPrompt;
- const setWelcomeMessage = message => {
- welcomeMessage = message;
- };
- const setHelper = (name, fn) => {
- helpers[name] = fn;
- };
- const setPartial = (name, str) => {
- partials[name] = str;
- };
- const setActionType = (name, fn) => {
- actionTypes[name] = fn;
- };
- function renderString(template, data) {
- var _context, _context2;
- (0, _forEach.default)(_context = (0, _keys.default)(helpers)).call(_context, h => _handlebars.default.registerHelper(h, helpers[h]));
- (0, _forEach.default)(_context2 = (0, _keys.default)(partials)).call(_context2, p => _handlebars.default.registerPartial(p, partials[p]));
- return _handlebars.default.compile(template)(data);
- }
- const getWelcomeMessage = () => welcomeMessage;
- const getHelper = name => helpers[name];
- const getPartial = name => partials[name];
- const getActionType = name => actionTypes[name];
- const getGenerator = name => generators[name];
- function setGenerator(name = '', config = {}) {
- // if no name is provided, use a default
- name = name || `generator-${(0, _keys.default)(generators).length + 1}`; // add the generator to this context
- generators[name] = (0, _assign.default)(config, {
- name: name,
- basePath: plopfilePath
- });
- return generators[name];
- }
- const getHelperList = () => {
- var _context3;
- return (0, _filter.default)(_context3 = (0, _keys.default)(helpers)).call(_context3, h => !(0, _includes.default)(baseHelpers).call(baseHelpers, h));
- };
- const getPartialList = () => (0, _keys.default)(partials);
- const getActionTypeList = () => (0, _keys.default)(actionTypes);
- function getGeneratorList() {
- var _context4;
- return (0, _map.default)(_context4 = (0, _keys.default)(generators)).call(_context4, function (name) {
- const {
- description
- } = generators[name];
- return {
- name,
- description
- };
- });
- }
- const setDefaultInclude = inc => defaultInclude = inc;
- const getDefaultInclude = () => defaultInclude;
- const getDestBasePath = () => destBasePath || plopfilePath;
- const getPlopfilePath = () => plopfilePath;
- const setPlopfilePath = filePath => {
- const pathStats = _fs.default.statSync(filePath);
- if (pathStats.isFile()) {
- plopfilePath = _path.default.dirname(filePath);
- } else {
- plopfilePath = filePath;
- }
- };
- function load(targets, loadCfg = {}, includeOverride) {
- if (typeof targets === 'string') {
- targets = [targets];
- }
- const config = (0, _assign.default)({
- destBasePath: getDestBasePath()
- }, loadCfg);
- (0, _forEach.default)(targets).call(targets, function (target) {
- var _context5;
- const targetPath = _resolve.default.sync(target, {
- basedir: getPlopfilePath()
- });
- const proxy = nodePlop(targetPath, config);
- const proxyDefaultInclude = proxy.getDefaultInclude() || {};
- const includeCfg = includeOverride || proxyDefaultInclude;
- const include = (0, _assign.default)({
- generators: false,
- helpers: false,
- partials: false,
- actionTypes: false
- }, includeCfg);
- const genNameList = (0, _map.default)(_context5 = proxy.getGeneratorList()).call(_context5, g => g.name);
- loadAsset(genNameList, include.generators, setGenerator, proxyName => ({
- proxyName,
- proxy
- }));
- loadAsset(proxy.getPartialList(), include.partials, setPartial, proxy.getPartial);
- loadAsset(proxy.getHelperList(), include.helpers, setHelper, proxy.getHelper);
- loadAsset(proxy.getActionTypeList(), include.actionTypes, setActionType, proxy.getActionType);
- });
- }
- function loadAsset(nameList, include, addFunc, getFunc) {
- var incArr;
- if (include === true) {
- incArr = nameList;
- }
- if (include instanceof Array) {
- incArr = (0, _filter.default)(include).call(include, n => typeof n === 'string');
- }
- if (incArr != null) {
- include = (0, _reduce.default)(incArr).call(incArr, function (inc, name) {
- inc[name] = name;
- return inc;
- }, {});
- }
- if (include instanceof Object) {
- var _context6;
- (0, _forEach.default)(_context6 = (0, _keys.default)(include)).call(_context6, i => addFunc(include[i], getFunc(i)));
- }
- }
- function loadPackageJson() {
- // look for a package.json file to use for the "pkg" helper
- try {
- pkgJson = require(_path.default.join(getDestBasePath(), 'package.json'));
- } catch (error) {
- pkgJson = {};
- }
- } /////////
- // the API that is exposed to the plopfile when it is executed
- // it differs from the nodePlopApi in that it does not include the
- // generator runner methods
- //
- const plopfileApi = {
- // main methods for setting and getting plop context things
- setPrompt,
- setWelcomeMessage,
- getWelcomeMessage,
- setGenerator,
- getGenerator,
- getGeneratorList,
- setPartial,
- getPartial,
- getPartialList,
- setHelper,
- getHelper,
- getHelperList,
- setActionType,
- getActionType,
- getActionTypeList,
- // path context methods
- setPlopfilePath,
- getPlopfilePath,
- getDestBasePath,
- // plop.load functionality
- load,
- setDefaultInclude,
- getDefaultInclude,
- // render a handlebars template
- renderString,
- // passthrough properties
- inquirer: _inquirer.default,
- handlebars: _handlebars.default,
- // passthroughs for backward compatibility
- addPrompt: setPrompt,
- addPartial: setPartial,
- addHelper: setHelper
- }; // the runner for this instance of the nodePlop api
- const runner = (0, _generatorRunner.default)(plopfileApi, {
- force
- });
- const nodePlopApi = (0, _assign.default)({}, plopfileApi, {
- getGenerator(name) {
- var generator = plopfileApi.getGenerator(name);
- if (generator == null) {
- throw Error(`Generator "${name}" does not exist.`);
- } // if this generator was loaded from an external plopfile, proxy the
- // generator request through to the external plop instance
- if (generator.proxy) {
- return generator.proxy.getGenerator(generator.proxyName);
- }
- return (0, _assign.default)({}, generator, {
- runActions: (data, hooks) => runner.runGeneratorActions(generator, data, hooks),
- runPrompts: (bypassArr = []) => runner.runGeneratorPrompts(generator, bypassArr)
- });
- },
- setGenerator(name, config) {
- const g = plopfileApi.setGenerator(name, config);
- return this.getGenerator(g.name);
- }
- });
- if (plopfilePath) {
- plopfilePath = _path.default.resolve(plopfilePath);
- const plopFileName = _path.default.basename(plopfilePath);
- setPlopfilePath(plopfilePath);
- loadPackageJson();
- const plopFileExport = require(_path.default.join(plopfilePath, plopFileName));
- const plop = typeof plopFileExport === 'function' ? plopFileExport : plopFileExport.default;
- plop(plopfileApi, plopCfg);
- } else {
- setPlopfilePath(process.cwd());
- loadPackageJson();
- }
- return nodePlopApi;
- }
- var _default = nodePlop;
- exports.default = _default;
|