Finalize the packaging script
This commit is contained in:
parent
1ac1fc5437
commit
13d4896ee2
3 changed files with 37 additions and 111 deletions
|
@ -287,90 +287,8 @@ shape = 7
|
|||
menu = 5
|
||||
css = "normal"
|
||||
|
||||
|
||||
###################################################################################################
|
||||
# Export plans
|
||||
# This mapping affects the process of creating ZIP archives only
|
||||
[exportPlans]
|
||||
|
||||
# Standard set
|
||||
01-iosevka = "iosevka"
|
||||
02-iosevka-fixed = "iosevka-fixed"
|
||||
03-iosevka-term = "iosevka-term"
|
||||
04-iosevka-slab = "iosevka-slab"
|
||||
05-iosevka-fixed-slab = "iosevka-fixed-slab"
|
||||
06-iosevka-term-slab = "iosevka-term-slab"
|
||||
07-iosevka-curly = "iosevka-curly"
|
||||
08-iosevka-fixed-curly = "iosevka-fixed-curly"
|
||||
09-iosevka-term-curly = "iosevka-term-curly"
|
||||
10-iosevka-curly-slab = "iosevka-curly-slab"
|
||||
11-iosevka-fixed-curly-slab = "iosevka-fixed-curly-slab"
|
||||
12-iosevka-term-curly-slab = "iosevka-term-curly-slab"
|
||||
|
||||
# Style set variants
|
||||
iosevka-ss01 = "iosevka-ss01"
|
||||
iosevka-fixed-ss01 = "iosevka-fixed-ss01"
|
||||
iosevka-term-ss01 = "iosevka-term-ss01"
|
||||
|
||||
iosevka-ss02 = "iosevka-ss02"
|
||||
iosevka-fixed-ss02 = "iosevka-fixed-ss02"
|
||||
iosevka-term-ss02 = "iosevka-term-ss02"
|
||||
|
||||
iosevka-ss03 = "iosevka-ss03"
|
||||
iosevka-fixed-ss03 = "iosevka-fixed-ss03"
|
||||
iosevka-term-ss03 = "iosevka-term-ss03"
|
||||
|
||||
iosevka-ss04 = "iosevka-ss04"
|
||||
iosevka-fixed-ss04 = "iosevka-fixed-ss04"
|
||||
iosevka-term-ss04 = "iosevka-term-ss04"
|
||||
|
||||
iosevka-ss05 = "iosevka-ss05"
|
||||
iosevka-fixed-ss05 = "iosevka-fixed-ss05"
|
||||
iosevka-term-ss05 = "iosevka-term-ss05"
|
||||
|
||||
iosevka-ss06 = "iosevka-ss06"
|
||||
iosevka-fixed-ss06 = "iosevka-fixed-ss06"
|
||||
iosevka-term-ss06 = "iosevka-term-ss06"
|
||||
|
||||
iosevka-ss07 = "iosevka-ss07"
|
||||
iosevka-fixed-ss07 = "iosevka-fixed-ss07"
|
||||
iosevka-term-ss07 = "iosevka-term-ss07"
|
||||
|
||||
iosevka-ss08 = "iosevka-ss08"
|
||||
iosevka-fixed-ss08 = "iosevka-fixed-ss08"
|
||||
iosevka-term-ss08 = "iosevka-term-ss08"
|
||||
|
||||
iosevka-ss09 = "iosevka-ss09"
|
||||
iosevka-fixed-ss09 = "iosevka-fixed-ss09"
|
||||
iosevka-term-ss09 = "iosevka-term-ss09"
|
||||
|
||||
iosevka-ss10 = "iosevka-ss10"
|
||||
iosevka-fixed-ss10 = "iosevka-fixed-ss10"
|
||||
iosevka-term-ss10 = "iosevka-term-ss10"
|
||||
|
||||
iosevka-ss11 = "iosevka-ss11"
|
||||
iosevka-fixed-ss11 = "iosevka-fixed-ss11"
|
||||
iosevka-term-ss11 = "iosevka-term-ss11"
|
||||
|
||||
iosevka-ss12 = "iosevka-ss12"
|
||||
iosevka-fixed-ss12 = "iosevka-fixed-ss12"
|
||||
iosevka-term-ss12 = "iosevka-term-ss12"
|
||||
|
||||
iosevka-ss13 = "iosevka-ss13"
|
||||
iosevka-fixed-ss13 = "iosevka-fixed-ss13"
|
||||
iosevka-term-ss13 = "iosevka-term-ss13"
|
||||
|
||||
iosevka-ss14 = "iosevka-ss14"
|
||||
iosevka-fixed-ss14 = "iosevka-fixed-ss14"
|
||||
iosevka-term-ss14 = "iosevka-term-ss14"
|
||||
|
||||
# Experimental variants
|
||||
iosevka-aile = "iosevka-aile"
|
||||
iosevka-etoile = "iosevka-etoile"
|
||||
iosevka-sparkle = "iosevka-sparkle"
|
||||
|
||||
###################################################################################################
|
||||
# TTC collection plans
|
||||
# Collect plans
|
||||
[collectPlans.iosevka]
|
||||
from = [
|
||||
"iosevka",
|
||||
|
|
|
@ -100,43 +100,45 @@ const PackageShapes = {
|
|||
const PackageSpacings = {
|
||||
// spacingDesc, ligation, spacingNameSuffix
|
||||
"": ["Default", true, ""],
|
||||
fixed: ["Fixed", false, "Fixed"],
|
||||
term: ["Terminal", true, "Term"]
|
||||
term: ["Terminal", true, "Term"],
|
||||
fixed: ["Fixed", false, "Fixed"]
|
||||
};
|
||||
|
||||
async function GeneratePackageList(out) {
|
||||
let nr = 1;
|
||||
out.log(`### Packages`);
|
||||
out.log(`| Package | Description |\n| --- | --- |`);
|
||||
out.log(`| Package | ${[...Object.entries(PackageSpacings)].map(x => x[1][0]).join(" | ")} |`);
|
||||
out.log(`| --- | ${[...Object.entries(PackageSpacings)].map(x => "---").join(" | ")} |`);
|
||||
for (let shape in PackageShapes) {
|
||||
const [shapeDesc, shapeNameSuffix, , count, nospace] = PackageShapes[shape];
|
||||
let line = "";
|
||||
const familyName = buildName("\u00a0", "Iosevka", shapeNameSuffix);
|
||||
const fileName = buildName("-", "pkg", "iosevka", shape, Version);
|
||||
const downloadLink = `https://github.com/be5invis/Iosevka/releases/download/v${Version}/${fileName}.zip`;
|
||||
|
||||
const desc = `_${shapeDesc}_`;
|
||||
line += `|**[${familyName}](${downloadLink})**<br/>${desc}|`;
|
||||
for (let spacing in PackageSpacings) {
|
||||
if (nospace && spacing) continue;
|
||||
if (nospace) {
|
||||
line += " ———— |";
|
||||
continue;
|
||||
}
|
||||
const [spacingDesc, ligation, spacingNameSuffix] = PackageSpacings[spacing];
|
||||
const fileName = buildName(
|
||||
"-",
|
||||
count ? pad(nr, 2, "0") : "",
|
||||
"iosevka",
|
||||
spacing,
|
||||
shape,
|
||||
Version
|
||||
);
|
||||
const familyName = buildName(" ", "Iosevka", spacingNameSuffix, shapeNameSuffix);
|
||||
const desc = nospace
|
||||
? `_${shapeDesc}_`
|
||||
: `**Shape**: _${shapeDesc}_; **Spacing**: _${spacingDesc}_ <br/>` +
|
||||
`**Ligation**: ${flag(ligation)}`;
|
||||
if (count) nr++;
|
||||
out.log(`| \`${fileName}\`<br/>**Menu Name**: \`${familyName}\` | ${desc} |`);
|
||||
const fileName = buildName("-", "ttf", "iosevka", spacing, shape, Version);
|
||||
const familyName = buildName("\u00a0", "Iosevka", spacingNameSuffix, shapeNameSuffix);
|
||||
const downloadLink = `https://github.com/be5invis/Iosevka/releases/download/v${Version}/${fileName}.zip`;
|
||||
const desc =
|
||||
noBreak(`**Spacing**: _${spacingDesc}_<br/>`) +
|
||||
noBreak(`**Ligatures**: _${flag(ligation)}_`);
|
||||
line += `**[${familyName}](${downloadLink})**<br/>${desc}|`;
|
||||
}
|
||||
out.log(line);
|
||||
}
|
||||
out.log();
|
||||
}
|
||||
|
||||
function pad(s, n, p) {
|
||||
s = "" + s;
|
||||
while (s.length < n) s = p + s;
|
||||
return s;
|
||||
function noBreak(s) {
|
||||
return s.replace(/ /g, "\u00a0");
|
||||
}
|
||||
|
||||
function buildName(j, ...parts) {
|
||||
|
|
16
verdafile.js
16
verdafile.js
|
@ -26,6 +26,9 @@ const webfontFormats = [
|
|||
["ttf", "truetype"]
|
||||
];
|
||||
|
||||
const SINGLE_GROUP_EXPORT_PREFIX = `ttf`;
|
||||
const COLLECTION_EXPORT_PREFIX = `pkg`;
|
||||
|
||||
const BUILD_PLANS = path.relative(__dirname, path.resolve(__dirname, "./build-plans.toml"));
|
||||
const PRIVATE_BUILD_PLANS = path.relative(
|
||||
__dirname,
|
||||
|
@ -95,8 +98,12 @@ const BuildPlans = computed("metadata:build-plans", async target => {
|
|||
return rp.buildPlans;
|
||||
});
|
||||
const ExportPlans = computed("metadata:export-plans", async target => {
|
||||
const [rp] = await target.need(RawPlans);
|
||||
return rp.exportPlans;
|
||||
const [rp] = await target.need(RawCollectPlans);
|
||||
let result = {};
|
||||
for (const collection in rp) {
|
||||
for (const s of rp[collection].from) result[s] = s;
|
||||
}
|
||||
return result;
|
||||
});
|
||||
const RawCollectPlans = computed("metadata:raw-collect-plans", async target => {
|
||||
const [rp] = await target.need(RawPlans);
|
||||
|
@ -500,7 +507,7 @@ const CollectionExport = task.group("collection-export", async (target, gr) => {
|
|||
for (const g of sourceGroups) await cp(`${DIST}/${g}`, `${DIST}/export/${gr}`);
|
||||
});
|
||||
const CollectionArchiveFile = file.make(
|
||||
(gr, version) => `${ARCHIVE_DIR}/ttc-${gr}-${version}.zip`,
|
||||
(gr, version) => `${ARCHIVE_DIR}/${COLLECTION_EXPORT_PREFIX}-${gr}-${version}.zip`,
|
||||
async (target, out, gr) => {
|
||||
await target.need(de`${out.dir}`, CollectionExport(gr));
|
||||
await rm(out.full);
|
||||
|
@ -519,9 +526,8 @@ const CollectionArchive = task.group(`collection-archive`, async (target, cid) =
|
|||
|
||||
// Single-group export
|
||||
const GroupArchiveFile = file.make(
|
||||
(gid, version) => `${ARCHIVE_DIR}/${gid}-${version}.zip`,
|
||||
(gid, version) => `${ARCHIVE_DIR}/${SINGLE_GROUP_EXPORT_PREFIX}-${gid}-${version}.zip`,
|
||||
async (target, { dir, full }, gid, version) => {
|
||||
// Note: this target does NOT depend on the font files.
|
||||
const [exportPlans] = await target.need(ExportPlans, de`${dir}`);
|
||||
await target.need(GroupContents(exportPlans[gid]));
|
||||
await cd(`${DIST}/${exportPlans[gid]}`).run(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue