UNPKG

@fesjs/utils

Version:
60 lines (58 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fs = require("fs"); var _path = require("path"); var _chalk = _interopRequireDefault(require("chalk")); var _mkdirp = _interopRequireDefault(require("mkdirp")); var _glob = _interopRequireDefault(require("glob")); var _mustache = _interopRequireDefault(require("mustache")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class Generator { cwd; args; constructor({ cwd, args }) { this.cwd = cwd; this.args = args; } async run() { await this.writing(); } // eslint-disable-next-line async writing() {} copyTpl(opts) { const tpl = (0, _fs.readFileSync)(opts.templatePath, 'utf-8'); const content = _mustache.default.render(tpl, opts.context); _mkdirp.default.sync((0, _path.dirname)(opts.target)); console.log(`${_chalk.default.green('Write:')} ${(0, _path.relative)(this.cwd, opts.target)}`); (0, _fs.writeFileSync)(opts.target, content, 'utf-8'); } copyDirectory(opts) { const files = _glob.default.sync('**/*', { cwd: opts.path, dot: true, ignore: ['**/node_modules/**'] }); files.forEach(file => { const absFile = (0, _path.join)(opts.path, file); if ((0, _fs.statSync)(absFile).isDirectory()) return; if (file.endsWith('.tpl')) { return this.copyTpl({ templatePath: absFile, target: (0, _path.join)(opts.target, file.replace(/\.tpl$/, '')), context: opts.context }); } console.log(`${_chalk.default.green('Copy: ')} ${file}`); const absTarget = (0, _path.join)(opts.target, file); _mkdirp.default.sync((0, _path.dirname)(absTarget)); (0, _fs.copyFileSync)(absFile, absTarget); }); } } var _default = exports.default = Generator;