s2s
Version:
Source To Source
81 lines (58 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = handleTemplates;
var _path = _interopRequireDefault(require("path"));
var _fs = _interopRequireDefault(require("fs"));
var _chalk = _interopRequireDefault(require("chalk"));
var _ejs = _interopRequireDefault(require("ejs"));
var _slash = _interopRequireDefault(require("slash"));
var _reporters = require("../reporters");
var _utils = require("../utils");
var _some = _interopRequireDefault(require("../utils/some"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function handleCopyError(err) {
if (err.code === 'ENOENT') {
const errorText = `${_chalk.default.reset.inverse.bold.red('TEMPLATE')} ${(0, _reporters.trimAndFormatPath)(err.path)}
no such file or directory`;
console.log(errorText);
} else {
console.log(err.stack);
}
}
const DEFAULT_TEMPLATES_DIR = 'templates';
function validate(template, eventPath) {
if (typeof template.test === 'string' || Array.isArray(template.test)) {
return (0, _some.default)(eventPath, template.test);
} else if (!template.test.test(eventPath)) {
return false;
}
return true;
}
function handleTemplate(eventPath, template, templatesDir) {
if (!validate(template, eventPath)) {
return;
}
const outputPath = template.output ? (0, _utils.getOutputPath)(template.output, eventPath) : eventPath;
if ((0, _utils.isAlreadyExist)(outputPath)) {
return;
}
const templatePath = _path.default.join(templatesDir, template.input);
const str = _fs.default.readFileSync(templatePath, 'utf8');
const result = _ejs.default.render(str, {
FILENAME: _path.default.parse(outputPath).name,
DIRNAME: _path.default.basename(_path.default.dirname(outputPath))
});
_fs.default.writeFileSync(outputPath, result);
console.log((0, _reporters.formatText)('TEMPLATE', (0, _utils.relativeFromCwd)(templatePath), (0, _slash.default)(outputPath)));
}
function handleTemplates(eventPath, templates = [], templatesDir = DEFAULT_TEMPLATES_DIR) {
for (const template of templates) {
try {
handleTemplate(eventPath, template, templatesDir);
} catch (error) {
handleCopyError(error);
}
}
}