Files
atom/script/lib/dump-symbols.js
Antonio Scandurra aa63162aed Move build to script
2016-08-02 09:24:02 +02:00

37 lines
1.2 KiB
JavaScript

const fs = require('fs-extra')
const glob = require('glob')
const minidump = require('minidump')
const path = require('path')
const CONFIG = require('../config')
module.exports = function () {
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) {
return new Promise(function (resolve, reject) {
minidump.dumpSymbol(binaryPath, function (error, content) {
if (error) {
reject(error)
throw new Error(error)
} else {
const moduleLine = /MODULE [^ ]+ [^ ]+ ([0-9A-F]+) (.*)\n/.exec(content)
if (moduleLine.length !== 3) {
reject()
throw new Error(`Invalid output when dumping symbol for ${binaryPath}`)
} 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)
resolve()
}
}
})
})
}