@fesjs/utils
Version:
60 lines (58 loc) • 1.89 kB
JavaScript
;
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;