Kevin Dreßler e66264b532
fix: typo
2024-01-28 14:25:51 +01:00

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();
}