From 2ae606ace5260bd1ab54c1a3ab73b06feb9d6f19 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 15 May 2021 15:43:19 -0700 Subject: [PATCH] Improve how we track build plans --- build-plans.toml | 2 +- verdafile.js | 58 +++++++++++++++++++++++++----------------------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/build-plans.toml b/build-plans.toml index 90706a85c..07e021b74 100644 --- a/build-plans.toml +++ b/build-plans.toml @@ -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 diff --git a/verdafile.js b/verdafile.js index fc0367969..da39d6706 100644 --- a/verdafile.js +++ b/verdafile.js @@ -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 //////