mirror of
https://github.com/turbot/steampipe.git
synced 2026-02-17 19:00:12 -05:00
50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
const camelCase = require("lodash/camelCase");
|
|
const fs = require("fs-extra");
|
|
const upperFirst = require("lodash/upperFirst");
|
|
|
|
(async () => {
|
|
const nodeModulesPath = "@material-symbols/svg-300/rounded";
|
|
const dir = await fs.readdir("./node_modules/" + nodeModulesPath);
|
|
let generatedFile = "// @ts-nocheck\n";
|
|
const outlineIcons = {};
|
|
const solidIcons = {};
|
|
for (const file of dir) {
|
|
const fileNameParts = file.split(".");
|
|
let importName = upperFirst(camelCase(fileNameParts[0]));
|
|
if (/^\d/.test(importName)) {
|
|
importName = "_" + importName;
|
|
}
|
|
const nameAndStyleParts = fileNameParts[0].split("-");
|
|
const name = nameAndStyleParts[0];
|
|
const isFillIcon =
|
|
nameAndStyleParts.length === 2 && nameAndStyleParts[1] === "fill";
|
|
|
|
if (isFillIcon) {
|
|
solidIcons[name] = {
|
|
component: importName,
|
|
};
|
|
} else {
|
|
outlineIcons[name] = {
|
|
component: importName,
|
|
};
|
|
}
|
|
generatedFile += `import { ReactComponent as ${importName} } from "${nodeModulesPath}/${file}";\n`;
|
|
}
|
|
generatedFile += "\n";
|
|
generatedFile += "const icons = {\n";
|
|
for (const [name, definition] of Object.entries(outlineIcons)) {
|
|
generatedFile += ` "${name}": ${definition.component},\n`;
|
|
generatedFile += ` "materialsymbols-outline:${name}": ${definition.component},\n`;
|
|
}
|
|
|
|
for (const [name, definition] of Object.entries(solidIcons)) {
|
|
generatedFile += ` "materialsymbols-solid:${name}": ${definition.component},\n`;
|
|
}
|
|
generatedFile += "}\n\n";
|
|
generatedFile += "export {\n";
|
|
generatedFile += " icons,\n";
|
|
generatedFile += "}";
|
|
|
|
await fs.writeFile("./src/icons/materialSymbols.ts", generatedFile);
|
|
})();
|