core/coordinators/icons.coordinator.ts
core/coordinators/icons.coordinator.ts is a file in Bane's Lab Build Scripts. 24 lines of code and 3 definitions.
import { discoverIcons, iconPathsOf } from "#core/loaders/icons.loader";
import { renderIconPaths, renderStylesheet } from "#core/formatters/icons.formatter";
import { HOME_ROW_LINKS } from "@banes-lab/web/configuration/icons/home.icons.ts";
import { ICON_PREFIX } from "#configuration/constants/icons.constants";
import { absolutePath } from "@ssot/paths";
import { writeCanonicalText } from "@govlab/canonical-write";
import { writeFontSubset } from "#core/persistence/icons.persistence";
const markNames = function markNames(): readonly string[] {
return HOME_ROW_LINKS.map((link) => link.icon)
.filter((icon) => icon.startsWith(ICON_PREFIX))
.map((icon) => icon.slice(ICON_PREFIX.length));
};
export const buildIcons = async function buildIcons(): Promise<number> {
const names = await discoverIcons();
await writeFontSubset(names);
await Promise.all([
writeCanonicalText(absolutePath("app.icons"), renderStylesheet(names)),
writeCanonicalText(
absolutePath("app.glyphs"),
renderIconPaths(markNames().map((name) => [name, iconPathsOf(name)])),
),
]);
return names.length;
};