UNPKG

dot-plop

Version:

A simple approach to PlopJS with first class TypeScript support and a one-line plopfile

57 lines 2.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_extra_1 = require("fs-extra"); const import_cwd_1 = __importDefault(require("import-cwd")); const path_1 = require("path"); const paths = __importStar(require("./paths")); function loadModulesInDir(dirPath) { return fs_extra_1.existsSync(dirPath) ? fs_extra_1.readdirSync(dirPath).flatMap((p) => { const { excluded = [], ...elements } = import_cwd_1.default(path_1.join(dirPath, p)); delete elements.default; return Object.entries(elements).filter(([key]) => { return !excluded.includes(key); }); }) : []; } function autoDiscover(plop) { function callIfFn(value) { if (typeof value === 'function') { return value(plop); } else { return value; } } if (!fs_extra_1.existsSync(paths.dotPlop)) throw new Error(`could not find ${paths.dotPlop}`); /* --------------------- LOAD GENERATORS --------------------- */ loadModulesInDir(paths.generators).forEach(([key, generator]) => { plop.setGenerator(key, callIfFn(generator)); }); /* ----------------------- LOAD ACTIONS ---------------------- */ loadModulesInDir(paths.actions).forEach(([key, actionFn]) => { plop.setActionType(key, actionFn); }); /* ----------------- LOAD HANDLEBARS HELPERS ----------------- */ loadModulesInDir(paths.helpers).forEach(([key, helper]) => { plop.setHelper(key, helper); }); /* ------------------- LOAD INQUIRER PROMPT ------------------ */ loadModulesInDir(paths.prompts).forEach(([key, prompt]) => { plop.setPrompt(key, prompt); }); } exports.autoDiscover = autoDiscover; //# sourceMappingURL=autoDiscover.js.map