55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
// 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);
|
|
});
|