19 lines
1.3 KiB
JavaScript
19 lines
1.3 KiB
JavaScript
import { createHash } from 'node:crypto'
|
|
import { readFile } from 'node:fs/promises'
|
|
import { resolve } from 'node:path'
|
|
|
|
const root = resolve(new URL('..', import.meta.url).pathname)
|
|
const manifest = JSON.parse(await readFile(resolve(root, 'config/planegcs-wasm-artifact.json'), 'utf8'))
|
|
if (manifest.schemaVersion !== 1 || manifest.freecadVersion !== '1.1.1' || manifest.freecadCommit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || manifest.emscriptenVersion !== '3.1.69' || manifest.pthreadPoolSize !== 2) throw new Error('planegcs artifact baseline is invalid.')
|
|
const checked = []
|
|
for (const kind of ['javascript', 'wasm']) {
|
|
const record = manifest[kind]
|
|
const bytes = await readFile(resolve(root, record.path))
|
|
const publicBytes = await readFile(resolve(root, record.publicPath))
|
|
const hash = createHash('sha256').update(bytes).digest('hex')
|
|
const publicHash = createHash('sha256').update(publicBytes).digest('hex')
|
|
if (hash !== record.sha256 || publicHash !== record.sha256) throw new Error(`planegcs ${kind} artifact hash drifted.`)
|
|
checked.push({ kind, bytes: bytes.byteLength, sha256: hash })
|
|
}
|
|
console.log(JSON.stringify({ status: 'planegcs-artifact-pass', freecadCommit: manifest.freecadCommit, pthreadPoolSize: manifest.pthreadPoolSize, artifacts: checked }, null, 2))
|