// Copyright 2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import fs from 'fs/promises'; import path from 'path'; import crypto from 'crypto'; import { execFileSync } from 'child_process'; const FIXTURES = path.join(__dirname, '..', '..', 'fixtures'); const SIZE = 256 * 1024; async function main() { const original = crypto.randomBytes(SIZE); const originalPath = path.join(FIXTURES, 'diff-original.bin'); await fs.writeFile(originalPath, original); // Add a few broken bytes to help create useful blockmaps for (let i = 0; i < 3; i += 1) { original[Math.floor(Math.random() * original.length)] = 0; } const modifiedPath = path.join(FIXTURES, 'diff-modified.bin'); await fs.writeFile(modifiedPath, original); const appBuilder = path.join( __dirname, '..', '..', 'node_modules', 'app-builder-bin', 'mac', 'app-builder_amd64' ); for (const filePath of [originalPath, modifiedPath]) { console.log('Adding blockmap to', filePath); // Put blockmap into a separate file console.log( execFileSync(appBuilder, [ 'blockmap', '--input', filePath, '--output', `${filePath}.blockmap`, ]).toString() ); } } main().catch(err => { console.error(err); process.exit(1); });