gui/modules/ui/scripts/update-icons.js
2022-12-21 10:02:20 +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();