mirror of
https://github.com/atom/atom.git
synced 2026-01-25 14:59:03 -05:00
32 lines
947 B
JavaScript
32 lines
947 B
JavaScript
'use strict'
|
|
|
|
const peg = require('pegjs')
|
|
const fs = require('fs')
|
|
const glob = require('glob')
|
|
const path = require('path')
|
|
|
|
const CONFIG = require('../config')
|
|
|
|
module.exports = function () {
|
|
console.log(`Transpiling PEG.js paths in ${CONFIG.intermediateAppPath}`)
|
|
for (let path of getPathsToTranspile()) {
|
|
transpilePegJsPath(path)
|
|
}
|
|
}
|
|
|
|
function getPathsToTranspile () {
|
|
let paths = []
|
|
for (let packageName of Object.keys(CONFIG.appMetadata.packageDependencies)) {
|
|
paths = paths.concat(glob.sync(path.join(CONFIG.intermediateAppPath, 'node_modules', packageName, '**', '*.pegjs'), {nodir: true}))
|
|
}
|
|
return paths
|
|
}
|
|
|
|
function transpilePegJsPath (pegJsPath) {
|
|
const inputCode = fs.readFileSync(pegJsPath, 'utf8')
|
|
const jsPath = pegJsPath.replace(/pegjs$/g, 'js')
|
|
const outputCode = 'module.exports = ' + peg.buildParser(inputCode, {output: 'source'})
|
|
fs.writeFileSync(jsPath, outputCode)
|
|
fs.unlinkSync(pegJsPath)
|
|
}
|