31 lines
820 B
TypeScript
31 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);
|
|
});
|