mirror of
https://github.com/ARMSX2/Armsx2-Repo.git
synced 2026-08-24 16:52:58 -07:00
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { canonicalBaseUrl, canonicalSourceUrl } from "./constants.js";
|
|
|
|
const expectedVersion = "1.3";
|
|
const liveUrls = [
|
|
canonicalSourceUrl,
|
|
`${canonicalBaseUrl}/checksums.json`,
|
|
`${canonicalBaseUrl}/ipas/ARMSX2-iOS-${expectedVersion}.ipa`,
|
|
`${canonicalBaseUrl}/assets/icon.png`,
|
|
];
|
|
|
|
const headCheck = async (url) => {
|
|
const response = await fetch(url, { method: "HEAD", redirect: "follow" });
|
|
|
|
return {
|
|
url,
|
|
status: response.status,
|
|
ok: response.ok,
|
|
finalUrl: response.url,
|
|
contentType: response.headers.get("content-type"),
|
|
contentLength: response.headers.get("content-length"),
|
|
};
|
|
};
|
|
|
|
const jsonDocument = async (url) => {
|
|
const response = await fetch(url, {
|
|
headers: { Accept: "application/json" },
|
|
redirect: "follow",
|
|
});
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`${url} returned ${response.status}.`);
|
|
}
|
|
|
|
return response.json();
|
|
};
|
|
|
|
const runSmokeCheck = async () => {
|
|
const results = [];
|
|
|
|
for (const liveUrl of liveUrls) {
|
|
results.push(await headCheck(liveUrl));
|
|
}
|
|
|
|
const sourceJson = await jsonDocument(canonicalSourceUrl);
|
|
const sourceVersion = sourceJson.apps?.[0]?.versions?.[0]?.version;
|
|
const downloadURL = sourceJson.apps?.[0]?.versions?.[0]?.downloadURL;
|
|
|
|
console.log(JSON.stringify({
|
|
expectedVersion,
|
|
sourceVersion,
|
|
downloadURL,
|
|
checks: results,
|
|
}, null, 2));
|
|
|
|
const failures = results
|
|
.filter((result) => !result.ok)
|
|
.map((result) => `${result.url} returned ${result.status}`);
|
|
|
|
if (sourceJson.sourceURL !== canonicalSourceUrl) {
|
|
failures.push(`Live sourceURL is ${sourceJson.sourceURL}; expected ${canonicalSourceUrl}.`);
|
|
}
|
|
|
|
if (sourceVersion !== expectedVersion) {
|
|
failures.push(`Live version is ${sourceVersion}; expected ${expectedVersion}.`);
|
|
}
|
|
|
|
if (downloadURL !== `${canonicalBaseUrl}/ipas/ARMSX2-iOS-${expectedVersion}.ipa`) {
|
|
failures.push(`Live downloadURL is ${downloadURL}; expected ${canonicalBaseUrl}/ipas/ARMSX2-iOS-${expectedVersion}.ipa.`);
|
|
}
|
|
|
|
if (failures.length > 0) {
|
|
throw new Error(failures.join("\n"));
|
|
}
|
|
};
|
|
|
|
try {
|
|
await runSmokeCheck();
|
|
} catch (smokeError) {
|
|
console.error(smokeError instanceof Error ? smokeError.message : smokeError);
|
|
process.exitCode = 1;
|
|
}
|