Signal-Desktop/ts/scripts/unpack-crash-reports.ts

32 lines
820 B
TypeScript

// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import fs from 'fs/promises';
import path from 'path';
import { SignalService as Proto } from '../protobuf';
async function main(fileName: string, outDir: string) {
await fs.mkdir(outDir, { recursive: true });
const encoded = await fs.readFile(fileName);
const { reports } = Proto.CrashReportList.decode(encoded);
await Promise.all(
reports.map(async ({ filename, content }) => {
if (!filename || !content) {
return;
}
const outFile = path.join(outDir, path.basename(filename));
console.log(`Extracting to ${outFile}`);
await fs.writeFile(outFile, content);
})
);
}
main(process.argv[2], process.argv[3]).catch(error => {
console.error(error.stack);
process.exit(1);
});