gui/modules/ui/scripts/update-icons.js
2023-02-14 14:31:06 +08:00

46 lines
1.4 KiB
JavaScript

import https from "https";
import fs from "fs";
import path from "path";
const fontasticDownloadURI = "https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/icons.css";
// i tried the zip dl unfortunately its auth protected so have to hack our way into the resources
const downloadFileTo = async (uri, path) => {
return new Promise((resolve) => {
const file = fs.createWriteStream(path);
https.get(uri, (res) => {
res.pipe(file);
file.on("finish", () => {
file.close();
console.log(`downloaded: ${uri}`);
resolve();
});
});
});
};
async function main() {
const tmpIconsCss = "./scripts/icons.css";
const iconsFolder = "./src/icons/";
await downloadFileTo(fontasticDownloadURI, tmpIconsCss); // works
const cssFile = fs.readFileSync(tmpIconsCss, "utf-8");
const matches = cssFile.matchAll(/url\(.*?\)/gi);
const [url] = matches.next().value;
const fileVersion = url.split("/").pop().split(".")[0];
const exts = ["eot", "woff", "ttf", "svg"];
for (const ext of exts) {
const uri = `https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/fonts/${fileVersion}.${ext}`;
await downloadFileTo(uri, path.join(iconsFolder, `fonts/tea-icons.${ext}`));
}
const newCssFile = cssFile
.replaceAll("https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/", "")
.replaceAll(fileVersion, "tea-icons");
await fs.writeFileSync(path.join(iconsFolder, "icons.css"), newCssFile, { encoding: "utf-8" });
}
main();