62 lines
1.2 KiB
JavaScript
62 lines
1.2 KiB
JavaScript
import { execSync } from "node:child_process";
|
|
import fs from "node:fs";
|
|
import { pathToFileURL } from "node:url";
|
|
|
|
|
|
export const startMarker = "### START-OF-ICON-MAP";
|
|
export const endMarker = "### END-OF-ICON-MAP";
|
|
|
|
|
|
export function build() {
|
|
execSync("./node_modules/.bin/svgtofont -s svgs/ -o dist/", {
|
|
stdio: "inherit",
|
|
});
|
|
|
|
const iconMap = fs.readdirSync("./mappings").map((file) => {
|
|
const iconName = file.replace(".svg", "");
|
|
const appNames = fs.readFileSync(`./mappings/${file}`, "utf8").trim();
|
|
return {
|
|
iconName,
|
|
appNames,
|
|
};
|
|
});
|
|
|
|
const iconMapBashFn = `
|
|
${startMarker}
|
|
function __icon_map() {
|
|
case "$1" in
|
|
${iconMap
|
|
.map(
|
|
({ appNames, iconName }) =>
|
|
` ${appNames})
|
|
icon_result="${iconName}"
|
|
;;`
|
|
)
|
|
.join("\n")}
|
|
*)
|
|
icon_result=":default:"
|
|
;;
|
|
esac
|
|
}
|
|
${endMarker}`;
|
|
|
|
fs.writeFileSync(
|
|
"./dist/icon_map.sh",
|
|
`#!/usr/bin/env bash
|
|
${iconMapBashFn}
|
|
`,
|
|
"utf8"
|
|
);
|
|
|
|
// chmod +x ./dist/icon_map.sh
|
|
fs.chmodSync("./dist/icon_map.sh", 0o755);
|
|
|
|
return { iconMapBashFn };
|
|
}
|
|
|
|
// only execute if run directly (ESM)
|
|
// use url instead of __filename to support pnpm
|
|
if (import.meta.url === pathToFileURL(process.argv[1]).toString()) {
|
|
build();
|
|
}
|