import fs from "fs"; import path from "path"; import { ImgX, MdCol } from "../md-format-tools.mjs"; const ImagePrefixNoVersion = `https://raw.githubusercontent.com/be5invis/Iosevka`; const DownloadLinkPrefixNoVersion = `https://github.com/be5invis/Iosevka/releases/download`; export default async function processPackageList(argv, dirs) { const imagePrefix = `${ImagePrefixNoVersion}/v${argv.version}/images`; const pkgShapesData = JSON.parse(await fs.promises.readFile(argv.releasePackagesJsonPath)); const DownloadLinkPrefix = `${DownloadLinkPrefixNoVersion}/v${argv.version}`; const md = new MdCol("Section-Package-List"); md.log(`# Package list of Release ${argv.version}`); const headerPath = path.resolve(dirs.fragments, "packages-desc.md"); md.log(await fs.promises.readFile(headerPath, "utf-8")); md.log(``); for (let [groupID, gr] of Object.entries(pkgShapesData)) { const prime = gr.subGroups[groupID]; const familyName = buildName("\u00a0", ...prime.family.split(" ")); const sTtcName = buildName("-", "SuperTTC", groupID, argv.version); const ttcName = buildName("-", "PkgTTC", groupID, argv.version); const proportionPrefix = gr.quasiProportional ? "Quasi-proportional" : "Monospace"; const desc = `${proportionPrefix}, ${prime.desc}`; const img = ImgX(`${imagePrefix}/package-sample-${groupID}`); let ttcCells = [``]; const hasSpacings = Object.entries(gr.subGroups).length > 1; if (hasSpacings) { const sTtcLink = `${DownloadLinkPrefix}/${sTtcName}.zip`; const ttcLink = `${DownloadLinkPrefix}/${ttcName}.zip`; ttcCells = [ ``, ``, `` ]; } md.log( ``, ``, ...ttcCells, `` ); md.log( ``, ``, ``, ``, ``, `` ); let lastSubGroupID = null; for (const [subGroupID, subGr] of Object.entries(gr.subGroups)) { lastSubGroupID = subGroupID; } for (const [subGroupID, subGr] of Object.entries(gr.subGroups)) { const [spacingDesc, ligation] = Spacings[subGr.spacing]; const createLink = (label, prefix) => { const fileName = buildName("-", prefix, subGroupID, argv.version); const downloadLink = `${DownloadLinkPrefix}/${fileName}.zip`; return `${label}`; }; const leader = "    " + (subGroupID === lastSubGroupID ? "└" : "├"); const superTtcPrefix = hasSpacings ? "SuperTTC-SGr" : "SuperTTC"; const ttcPrefix = hasSpacings ? "PkgTTC-SGr" : "PkgTTC"; md.log( ``, ``, ``, ``, ``, ``, ``, ``, `` ); } md.log(``, ``, ``); } md.log(`
 Super\u00A0TTCTTC 
📦 ${familyName} — ${desc}
  └ Sub-packagesSpacingLigaturesDownloads
${leader} ${noBreak(subGr.family)}${spacingDesc}${flag(ligation)}${createLink("Super\u00A0TTC", superTtcPrefix)}${createLink("TTC", ttcPrefix)}${createLink("TTF", "PkgTTF")} ` + `(${createLink("Unhinted", "PkgTTF-Unhinted")})${createLink("WebFont", "PkgWebFont")} ` + `(${createLink("Unhinted", "PkgWebFont-Unhinted")})
${img}
\n`); return md; } function buildName(j, ...parts) { return parts.filter(x => !!x).join(j); } function noBreak(s) { return s.replace(/ /g, "\u00a0"); } const Spacings = { // spacingDesc, ligation type: ["Default", true], term: ["Terminal", true], fixed: ["Fixed", false], "quasi-proportional": ["Default", false] }; function flag(f) { return f ? "Yes" : "No"; }