generate-riot-ts
Version:
Script to generate riot.js template files with typescript
64 lines (63 loc) • 2.97 kB
JavaScript
exports.__esModule = true;
var tslib_1 = require("tslib");
var fs = require("fs");
var path = require("path");
var template_file_1 = require("template-file");
function generate(exportPath, componentName) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var cwd, exportDirPath, templateDirPath, lowerName, upperName, exportRootPath, err_1, exportPathRiot, exportPathTypes, data, renderedRiot, renderedTypes;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
cwd = process.cwd();
exportDirPath = path.resolve(cwd, exportPath);
templateDirPath = path.resolve(__dirname, "../template");
lowerName = componentName.toLowerCase();
upperName = componentName
.split("-")
.map(function (word) {
return word.replace(/^./, word[0].toUpperCase());
})
.join("");
exportRootPath = path.join(exportDirPath, lowerName);
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 6]);
return [4 /*yield*/, fs.readdirSync(exportRootPath)];
case 2:
_a.sent();
return [3 /*break*/, 6];
case 3:
err_1 = _a.sent();
if (!(err_1.code == "ENOENT")) return [3 /*break*/, 5];
return [4 /*yield*/, fs.mkdirSync(exportRootPath, { recursive: true })];
case 4:
_a.sent();
_a.label = 5;
case 5: return [3 /*break*/, 6];
case 6:
exportPathRiot = path.join(exportRootPath, lowerName + ".riot");
exportPathTypes = path.join(exportRootPath, "types.ts");
data = {
lower: lowerName,
upper: upperName
};
return [4 /*yield*/, template_file_1.renderTemplateFile(path.join(templateDirPath, "riot"), data)];
case 7:
renderedRiot = _a.sent();
return [4 /*yield*/, template_file_1.renderTemplateFile(path.join(templateDirPath, "types"), data)];
case 8:
renderedTypes = _a.sent();
return [4 /*yield*/, fs.writeFileSync(exportPathRiot, renderedRiot)];
case 9:
_a.sent();
return [4 /*yield*/, fs.writeFileSync(exportPathTypes, renderedTypes)];
case 10:
_a.sent();
return [2 /*return*/, exportRootPath];
}
});
});
}
exports.generate = generate;
;