Improve how we track build plans
This commit is contained in:
parent
0a2c323000
commit
2ae606ace5
2 changed files with 31 additions and 29 deletions
|
@ -577,7 +577,7 @@ inherits = "ss17"
|
||||||
|
|
||||||
[buildPlans.iosevka-ss18]
|
[buildPlans.iosevka-ss18]
|
||||||
family = "Iosevka SS18"
|
family = "Iosevka SS18"
|
||||||
desc = "Recursive Mono Style"
|
desc = "Input Mono Style"
|
||||||
snapshotFamily = 'iosevka'
|
snapshotFamily = 'iosevka'
|
||||||
snapshotFeature = '"ss18" on'
|
snapshotFeature = '"ss18" on'
|
||||||
no-cv-ss = true
|
no-cv-ss = true
|
||||||
|
|
58
verdafile.js
58
verdafile.js
|
@ -50,14 +50,9 @@ build.setSelfTracking();
|
||||||
////// Oracles //////
|
////// 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 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;
|
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(
|
const InstalledVersion = computed.make(
|
||||||
(pkg, required) => `env::installed-version::${pkg}::${required}`,
|
(pkg, required) => `env::installed-version::${pkg}::${required}`,
|
||||||
async (target, 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 //////
|
////// Plans //////
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const RawPlans = computed(`metadata:raw-plans`, async target => {
|
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);
|
const bp = await tryParseToml(BUILD_PLANS);
|
||||||
bp.buildOptions = bp.buildOptions || {};
|
bp.buildOptions = bp.buildOptions || {};
|
||||||
|
@ -778,22 +774,28 @@ phony(`clean`, async () => {
|
||||||
build.deleteJournal();
|
build.deleteJournal();
|
||||||
});
|
});
|
||||||
phony(`release`, async target => {
|
phony(`release`, async target => {
|
||||||
const [version, collectPlans] = await target.need(Version, CollectPlans);
|
const [collectPlans] = await target.need(CollectPlans);
|
||||||
let goals = [];
|
let goals = [];
|
||||||
for (const [cgr, subGroups] of Object.entries(collectPlans.groupDecomposition)) {
|
for (const cgr of Object.keys(collectPlans.groupDecomposition)) {
|
||||||
if (!collectPlans.groupInRelease[cgr]) continue;
|
if (!collectPlans.groupInRelease[cgr]) continue;
|
||||||
goals.push(TtcArchiveFile(cgr, version), SuperTtcArchiveFile(cgr, version));
|
goals.push(ReleaseGroup(cgr));
|
||||||
for (const gr of subGroups) {
|
|
||||||
goals.push(
|
|
||||||
GroupTtfArchiveFile(gr, version),
|
|
||||||
GroupTtfUnhintedArchiveFile(gr, version),
|
|
||||||
GroupWebArchiveFile(gr, version)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
await target.need(goals);
|
await target.need(goals);
|
||||||
await target.need(SampleImages, Pages, ReleaseNotes, ChangeLog);
|
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 //////
|
////// Script Building //////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue