UNPKG

badge-urls

Version:

Helper functions to generate URLs for all badges / shields from shields.io

95 lines (94 loc) 4.52 kB
"use strict"; 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();