ci: schedule guarded GitHub Pages publishing
Publish GitHub Pages output / publish (push) Has been cancelled
Publish GitHub Pages output / publish (push) Has been cancelled
This commit is contained in:
@@ -36,21 +36,38 @@ if (mismatchedVersions.length > 0) {
|
||||
}
|
||||
|
||||
const approvedNotBefore = Date.parse(policy.approvedNotBefore);
|
||||
if (!Number.isFinite(approvedNotBefore) || now < approvedNotBefore) {
|
||||
throw new Error(`The approved master data cannot be published before ${policy.approvedNotBefore}.`);
|
||||
if (!Number.isFinite(approvedNotBefore)) {
|
||||
throw new Error('approvedNotBefore must be a valid ISO-8601 date.');
|
||||
}
|
||||
|
||||
const unreleasedCharts = charts.charts.filter((chart) => !Number.isFinite(chart.releaseTime) || chart.releaseTime > now);
|
||||
const undatedCharts = charts.charts.filter((chart) => !Number.isFinite(chart.releaseTime));
|
||||
if (undatedCharts.length > 0) {
|
||||
throw new Error(`Pages build contains ${undatedCharts.length} undated charts: ${undatedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
|
||||
}
|
||||
|
||||
const undatedEvents = events.filter((event) => !Number.isFinite(Date.parse(event.startsAt)));
|
||||
if (undatedEvents.length > 0) {
|
||||
throw new Error(`Pages build contains undated events: ${undatedEvents.map((event) => event.id).join(', ')}`);
|
||||
}
|
||||
|
||||
const notReadyReasons = [];
|
||||
if (now < approvedNotBefore) {
|
||||
notReadyReasons.push(`approved master data cannot be published before ${policy.approvedNotBefore}`);
|
||||
}
|
||||
|
||||
const unreleasedCharts = charts.charts.filter((chart) => chart.releaseTime > now);
|
||||
if (unreleasedCharts.length > 0) {
|
||||
throw new Error(`Pages build contains ${unreleasedCharts.length} unreleased or undated charts: ${unreleasedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
|
||||
notReadyReasons.push(`${unreleasedCharts.length} charts are not released yet: ${unreleasedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
|
||||
}
|
||||
|
||||
const unreleasedEvents = events.filter((event) => {
|
||||
const startsAt = Date.parse(event.startsAt);
|
||||
return !Number.isFinite(startsAt) || startsAt > now;
|
||||
});
|
||||
const unreleasedEvents = events.filter((event) => Date.parse(event.startsAt) > now);
|
||||
if (unreleasedEvents.length > 0) {
|
||||
throw new Error(`Pages build contains unreleased or undated events: ${unreleasedEvents.map((event) => event.id).join(', ')}`);
|
||||
notReadyReasons.push(`events are not released yet: ${unreleasedEvents.map((event) => event.id).join(', ')}`);
|
||||
}
|
||||
|
||||
if (notReadyReasons.length > 0) {
|
||||
process.stderr.write(`Pages public-data gate is not ready at ${new Date(now).toISOString()}: ${notReadyReasons.join('; ')}.\n`);
|
||||
process.exit(78);
|
||||
}
|
||||
|
||||
process.stdout.write(`Pages public-data gate passed at ${new Date(now).toISOString()}.\n`);
|
||||
|
||||
Reference in New Issue
Block a user