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