Improve how we track build plans

This commit is contained in:
be5invis 2021-05-15 15:43:19 -07:00
parent 0a2c323000
commit 2ae606ace5
2 changed files with 31 additions and 29 deletions

View file

@ -577,7 +577,7 @@ inherits = "ss17"
[buildPlans.iosevka-ss18]
family = "Iosevka SS18"
desc = "Recursive Mono Style"
desc = "Input Mono Style"
snapshotFamily = 'iosevka'
snapshotFeature = '"ss18" on'
no-cv-ss = true

View file

@ -50,14 +50,9 @@ build.setSelfTracking();
////// Oracles //////
///////////////////////////////////////////////////////////
const PackageJsonData = computed(`env::package-json-data`, async target => {
const [pj] = await target.need(sfu`package.json`);
const package_json = JSON.parse(await fs.promises.readFile(pj.full, "utf-8"));
return package_json;
});
const Version = computed(`env::version`, async target => {
const [pj] = await target.need(PackageJsonData);
const [pjf] = await target.need(sfu`package.json`);
const pj = JSON.parse(await fs.promises.readFile(pjf.full, "utf-8"));
return pj.version;
});
@ -69,6 +64,17 @@ const CheckTtfAutoHintExists = oracle(`oracle:check-ttfautohint-exists`, async t
}
});
const Dependencies = computed("env::dependencies", async target => {
const [pjf] = await target.need(sfu`package.json`);
const pj = JSON.parse(await fs.promises.readFile(pjf.full, "utf-8"));
let subGoals = [];
for (const pkgName in pj.dependencies) {
subGoals.push(InstalledVersion(pkgName, pj.dependencies[pkgName]));
}
const [actual] = await target.need(subGoals);
return actual;
});
const InstalledVersion = computed.make(
(pkg, required) => `env::installed-version::${pkg}::${required}`,
async (target, pkg, required) => {
@ -84,22 +90,12 @@ const InstalledVersion = computed.make(
}
);
const Dependencies = computed("env::dependencies", async target => {
const [pj] = await target.need(PackageJsonData);
let subGoals = [];
for (const pkgName in pj.dependencies) {
subGoals.push(InstalledVersion(pkgName, pj.dependencies[pkgName]));
}
const [actual] = await target.need(subGoals);
return actual;
});
///////////////////////////////////////////////////////////
////// Plans //////
///////////////////////////////////////////////////////////
const RawPlans = computed(`metadata:raw-plans`, async target => {
await target.need(sfu(BUILD_PLANS), ofu(PRIVATE_BUILD_PLANS));
await target.need(sfu(BUILD_PLANS), ofu(PRIVATE_BUILD_PLANS), Version);
const bp = await tryParseToml(BUILD_PLANS);
bp.buildOptions = bp.buildOptions || {};
@ -778,22 +774,28 @@ phony(`clean`, async () => {
build.deleteJournal();
});
phony(`release`, async target => {
const [version, collectPlans] = await target.need(Version, CollectPlans);
const [collectPlans] = await target.need(CollectPlans);
let goals = [];
for (const [cgr, subGroups] of Object.entries(collectPlans.groupDecomposition)) {
for (const cgr of Object.keys(collectPlans.groupDecomposition)) {
if (!collectPlans.groupInRelease[cgr]) continue;
goals.push(TtcArchiveFile(cgr, version), SuperTtcArchiveFile(cgr, version));
for (const gr of subGroups) {
goals.push(
GroupTtfArchiveFile(gr, version),
GroupTtfUnhintedArchiveFile(gr, version),
GroupWebArchiveFile(gr, version)
);
}
goals.push(ReleaseGroup(cgr));
}
await target.need(goals);
await target.need(SampleImages, Pages, ReleaseNotes, ChangeLog);
});
const ReleaseGroup = phony.group("release-group", async (target, cgr) => {
const [version, collectPlans] = await target.need(Version, CollectPlans);
const subGroups = collectPlans.GroupContents[cgr];
let goals = [TtcArchiveFile(cgr, version), SuperTtcArchiveFile(cgr, version)];
for (const gr of subGroups) {
goals.push(GroupTtfArchiveFile(gr, version));
goals.push(GroupTtfUnhintedArchiveFile(gr, version));
goals.push(GroupWebArchiveFile(gr, version));
}
await target.need(goals);
});
///////////////////////////////////////////////////////////
////// Script Building //////