badge-urls
Version:
Helper functions to generate URLs for all badges / shields from shields.io
95 lines (94 loc) • 4.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var path = tslib_1.__importStar(require("path"));
var fs_1 = require("../../utils/fs");
var constants_1 = require("../constants");
var case_1 = require("../../utils/case");
var firstAvailableSafeName_1 = tslib_1.__importDefault(require("../../utils/firstAvailableSafeName"));
var generateShieldModule_1 = tslib_1.__importDefault(require("./generateShieldModule"));
var AUTO_GENERATED_FILE_PREFIX = "// This file was auto-generated. Do not modify it by hand and instead modify the scraper or code generator files.\n\n";
var OUT_DIR = path.resolve(__dirname, "..", "shields");
function generateAll(shieldData) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var categories, categoryNames, _i, categories_1, category, categoryName, categoryPath, moduleNames, _a, _b, _c, label, url, moduleName, moduleData, categoryIndexFileContent, indexContent;
return tslib_1.__generator(this, function (_d) {
switch (_d.label) {
case 0:
categories = Object.keys(shieldData);
categoryNames = [];
return [4 /*yield*/, fs_1.mkdir(OUT_DIR, { recursive: true })];
case 1:
_d.sent();
_i = 0, categories_1 = categories;
_d.label = 2;
case 2:
if (!(_i < categories_1.length)) return [3 /*break*/, 10];
category = categories_1[_i];
categoryName = firstAvailableSafeName_1.default(case_1.camelCase(category), categoryNames);
categoryPath = path.join(OUT_DIR, categoryName);
return [4 /*yield*/, fs_1.mkdir(categoryPath, { recursive: true })];
case 3:
_d.sent();
moduleNames = [];
console.log(category);
_a = 0, _b = shieldData[category];
_d.label = 4;
case 4:
if (!(_a < _b.length)) return [3 /*break*/, 7];
_c = _b[_a], label = _c.label, url = _c.url;
moduleName = firstAvailableSafeName_1.default(case_1.camelCase(label), moduleNames);
moduleData = AUTO_GENERATED_FILE_PREFIX + generateShieldModule_1.default(label, url);
return [4 /*yield*/, fs_1.writeFile(path.join(categoryPath, moduleName + ".ts"), moduleData)];
case 5:
_d.sent();
_d.label = 6;
case 6:
_a++;
return [3 /*break*/, 4];
case 7:
categoryIndexFileContent = generateIndexFile(moduleNames);
return [4 /*yield*/, fs_1.writeFile(path.join(categoryPath, "index.ts"), categoryIndexFileContent)];
case 8:
_d.sent();
_d.label = 9;
case 9:
_i++;
return [3 /*break*/, 2];
case 10:
indexContent = generateIndexFile(categoryNames);
return [4 /*yield*/, fs_1.writeFile(path.join(OUT_DIR, "index.ts"), indexContent)];
case 11:
_d.sent();
return [2 /*return*/];
}
});
});
}
function generateIndexFile(files) {
return (AUTO_GENERATED_FILE_PREFIX +
files.map(function (name) { return "export * as " + name + " from './" + name + "';"; }).join("\n"));
// const fileName = path.join(OUT_DIR, "index.ts");
// await writeFile(fileName, moduleContent);
}
function main() {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var shieldData, _a, _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
_b = (_a = JSON).parse;
return [4 /*yield*/, fs_1.readFile(path.resolve(constants_1.SHIELDS_IO_DATA_FILE), {
encoding: "utf-8",
})];
case 1:
shieldData = _b.apply(_a, [(_c.sent())]);
return [4 /*yield*/, generateAll(shieldData)];
case 2:
_c.sent();
return [2 /*return*/];
}
});
});
}
main();