INNER CODE UNIT · JavaScript
ensureNative
tiliondev/fortress · sdk/node/index.js:68
async function ensureNative(plat, host, tag) {
const { asset, kind, launcher } = ASSETS[plat];
const root = join(CACHE, tag, plat); // cache per release tag so channels don't collide
const launcherPath = join(root, launcher);
if (existsSync(launcherPath)) return launcherPath;
mkdirSync(root, { recursive: true });
const archive = join(root, asset);
process.stderr.write(`[tilion-fortress] downloading ${host}/${asset} ...\n`);
const res = await fetch(`${host}/${asset}`);
if (!res.ok) throw new Error(`download failed: ${res.status}`);
await pipeline(res.body, createWriteStream(archive));
const exp = await expectedSha(asset, host);
if (exp) {
const act = await sha256(archive);
if (act !== exp) throw new Error(`SHA256 mismatch for ${asset}: expected ${exp}, got ${act}`);
process.stderr.write("[tilion-fortress] SHA256 verified\n");
} else {