UNPKG

create-managed-component

Version:
52 lines (51 loc) 2.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const locreq_1 = __importDefault(require("locreq")); const locreq = (0, locreq_1.default)(__dirname); function initTemplate(config) { const { displayName, namespace, description, icon, implements: imps, permissions, } = config; if (!fs_1.default.existsSync(namespace)) { fs_1.default.mkdirSync(namespace); } const manifest = { name: displayName, namespace, description, icon, implements: imps, permissions, }; fs_1.default.writeFileSync(`${namespace}/manifest.json`, JSON.stringify(manifest, null, 2)); fs_1.default.writeFileSync(`${namespace}/.npmignore`, 'src'); processDir(config); } exports.default = initTemplate; function processDir(config, subdir = '.') { const { displayName, namespace, description, implements: imps } = config; const templateDir = path_1.default.resolve(locreq.resolve('template'), subdir); const targetDir = path_1.default.resolve(namespace, subdir); if (!fs_1.default.existsSync(targetDir)) { fs_1.default.mkdirSync(targetDir, { recursive: true }); } const files = fs_1.default.readdirSync(templateDir); for (const file of files) { console.log(file); const src = path_1.default.resolve(templateDir, file); const dest = path_1.default.resolve(targetDir, file).replace(/\.keep$/, ''); // we suffix .npmignore file with `.keep` in order to prevent template files it mentions being not published to npm if (fs_1.default.lstatSync(src).isDirectory()) { processDir(config, subdir + '/' + path_1.default.basename(src)); } else { const data = fs_1.default.readFileSync(src, 'utf8'); const replaced = data.replace(/{{ displayName }}/g, displayName); const replaced2 = replaced.replace(/{{ namespace }}/g, namespace); const replaced3 = replaced2.replace(/{{ description }}/g, description); fs_1.default.writeFileSync(dest, replaced3); } } }