Initial Bible data repository
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { readdir } from 'node:fs/promises'
|
||||
import path from 'node:path'
|
||||
import { downloadFile, readJson, sha256File } from './lib.js'
|
||||
|
||||
const root = process.cwd()
|
||||
const sourceDir = path.join(root, 'sources')
|
||||
const files = (await readdir(sourceDir)).filter((file) => file.endsWith('.json'))
|
||||
|
||||
for (const file of files) {
|
||||
const manifestPath = path.join(sourceDir, file)
|
||||
const manifest = await readJson(manifestPath)
|
||||
const cachePath = path.join(root, 'cache', manifest.id, path.basename(manifest.source.download_url))
|
||||
|
||||
await downloadFile(manifest.source.download_url, cachePath)
|
||||
const actual = await sha256File(cachePath)
|
||||
const expected = manifest.checks.expected_sha256?.toLowerCase()
|
||||
const status = expected === actual ? 'unchanged' : 'changed'
|
||||
|
||||
console.log(`${manifest.id}: ${status}`)
|
||||
console.log(` expected: ${expected}`)
|
||||
console.log(` actual: ${actual}`)
|
||||
|
||||
if (status === 'changed') {
|
||||
process.exitCode = 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user