mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-10 10:17:11 +03:00
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const fs = require('fs-extra');
|
|
const glob = require('glob');
|
|
const path = require('path');
|
|
|
|
const CONFIG = require('../config');
|
|
module.exports = function() {
|
|
if (process.platform === 'win32') {
|
|
console.log(
|
|
'Skipping symbol dumping because minidump is not supported on Windows'
|
|
.gray
|
|
);
|
|
return Promise.resolve();
|
|
} else {
|
|
console.log(`Dumping symbols in ${CONFIG.symbolsPath}`);
|
|
const binaryPaths = glob.sync(
|
|
path.join(CONFIG.intermediateAppPath, 'node_modules', '**', '*.node')
|
|
);
|
|
return Promise.all(binaryPaths.map(dumpSymbol));
|
|
}
|
|
};
|
|
|
|
function dumpSymbol(binaryPath) {
|
|
const minidump = require('minidump');
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
minidump.dumpSymbol(binaryPath, function(error, content) {
|
|
if (error) {
|
|
console.error(error);
|
|
throw new Error(error);
|
|
} else {
|
|
const moduleLine = /MODULE [^ ]+ [^ ]+ ([0-9A-F]+) (.*)\n/.exec(
|
|
content
|
|
);
|
|
if (moduleLine.length !== 3) {
|
|
const errorMessage = `Invalid output when dumping symbol for ${binaryPath}`;
|
|
console.error(errorMessage);
|
|
throw new Error(errorMessage);
|
|
} else {
|
|
const filename = moduleLine[2];
|
|
const symbolDirPath = path.join(
|
|
CONFIG.symbolsPath,
|
|
filename,
|
|
moduleLine[1]
|
|
);
|
|
const symbolFilePath = path.join(symbolDirPath, `${filename}.sym`);
|
|
fs.mkdirpSync(symbolDirPath);
|
|
fs.writeFileSync(symbolFilePath, content);
|
|
resolve();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|