fork init
This commit is contained in:
parent
b4f5aba93b
commit
2e6b63ea33
11 changed files with 8 additions and 2651 deletions
41
.forgejo/scripts/convert/index.mjs
Normal file
41
.forgejo/scripts/convert/index.mjs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import { readFile, writeFile } from "fs/promises";
|
||||
import { join } from "path";
|
||||
import { format } from "prettier";
|
||||
|
||||
console.time("Done");
|
||||
|
||||
console.log("Reading avatarsdatabase.css...");
|
||||
const avis = (await readFile(join("../../", "avatarsdatabase.css"), "utf8"))
|
||||
.replace(/\r/g, "")
|
||||
.split("\n");
|
||||
|
||||
const imageMatcher = /url\((?:'|")([^'"]+)(?:'|")\)/;
|
||||
const avatarMatcher = /^\/\* Custom avatar for ([0-9]+) \*\/$/;
|
||||
const badgeMatcher = /^\/\* Custom badge for (.*?) \*\/$/;
|
||||
|
||||
const avatars = {};
|
||||
for (let i = 0; i < avis.length; i++) {
|
||||
const l = avis[i];
|
||||
const id = l.match(avatarMatcher)?.[1];
|
||||
if (id) avatars[id] = avis[i + 2].match(imageMatcher)[1];
|
||||
}
|
||||
|
||||
const badges = {};
|
||||
for (let i = 0; i < avis.length; i++) {
|
||||
const l = avis[i];
|
||||
const bid = l.match(badgeMatcher)?.[1];
|
||||
if (bid) badges[bid] = avis[i + 10].match(imageMatcher)[1];
|
||||
}
|
||||
|
||||
await writeFile(
|
||||
join("../../", "source", "data.json"),
|
||||
format(
|
||||
JSON.stringify({
|
||||
avatars,
|
||||
badges,
|
||||
}),
|
||||
{
|
||||
parser: "json",
|
||||
}
|
||||
)
|
||||
);
|
||||
49
.forgejo/scripts/generate/index.mjs
Normal file
49
.forgejo/scripts/generate/index.mjs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import { readFile, writeFile } from "fs/promises";
|
||||
import { join } from "path";
|
||||
import UglifyCSS from "uglifycss";
|
||||
|
||||
console.time("Done");
|
||||
|
||||
const uglify = !process.argv.includes("--debug");
|
||||
|
||||
console.log("Getting templates...");
|
||||
const templateLines = (
|
||||
await readFile(join("../../", "source", "template.css"), "utf8")
|
||||
)
|
||||
.replace(/\r/g, "")
|
||||
.split("\n");
|
||||
|
||||
const templates = {
|
||||
avatar: "",
|
||||
};
|
||||
|
||||
for (const id of Object.keys(templates)) {
|
||||
const start = templateLines.findIndex(
|
||||
(x) => x === `/* ${id.toUpperCase()}-TEMPLATE-BEGIN */`
|
||||
),
|
||||
end = templateLines.findIndex(
|
||||
(x) => x === `/* ${id.toUpperCase()}-TEMPLATE-END */`
|
||||
);
|
||||
|
||||
if (start >= 0 && end >= 0)
|
||||
templates[id] = templateLines.slice(start + 1, end).join("\n");
|
||||
else throw new Error(`Failed to get template lines for: ${id}`);
|
||||
}
|
||||
|
||||
console.log("Generating import.css...");
|
||||
const data = JSON.parse(
|
||||
await readFile(join("../../", "source", "data.json"), "utf8")
|
||||
);
|
||||
|
||||
const dist = [];
|
||||
|
||||
for (const [id, img] of Object.entries(data.avatars)) {
|
||||
dist.push(templates.avatar.replace(/{id}/g, id).replace(/{img}/g, img));
|
||||
}
|
||||
|
||||
await writeFile(
|
||||
join("../../", "import.css"),
|
||||
uglify ? UglifyCSS.processString(dist.join("\n")) : dist.join("\n\n")
|
||||
);
|
||||
|
||||
console.timeEnd("Done");
|
||||
13
.forgejo/scripts/package.json
Normal file
13
.forgejo/scripts/package.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "scripts",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"convert": "node convert/index.mjs",
|
||||
"generate": "node generate/index.mjs",
|
||||
"generate:debug": "node generate/index.mjs --debug"
|
||||
},
|
||||
"dependencies": {
|
||||
"prettier": "^3.0.2",
|
||||
"uglifycss": "^0.0.29"
|
||||
}
|
||||
}
|
||||
27
.forgejo/scripts/pnpm-lock.yaml
generated
Normal file
27
.forgejo/scripts/pnpm-lock.yaml
generated
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
lockfileVersion: '6.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
prettier:
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2
|
||||
uglifycss:
|
||||
specifier: ^0.0.29
|
||||
version: 0.0.29
|
||||
|
||||
packages:
|
||||
|
||||
/prettier@3.0.2:
|
||||
resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/uglifycss@0.0.29:
|
||||
resolution: {integrity: sha512-J2SQ2QLjiknNGbNdScaNZsXgmMGI0kYNrXaDlr4obnPW9ni1jljb1NeEVWAiTgZ8z+EBWP2ozfT9vpy03rjlMQ==}
|
||||
engines: {node: '>=6.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
Loading…
Add table
Add a link
Reference in a new issue