mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-10 10:17:11 +03:00
71 lines
2.4 KiB
JavaScript
71 lines
2.4 KiB
JavaScript
'use strict'
|
|
|
|
const childProcess = require('child_process')
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
|
|
const CONFIG = require('../config')
|
|
|
|
module.exports = function () {
|
|
verifyNode()
|
|
verifyNpm()
|
|
if (process.platform === 'win32') {
|
|
verifyPython()
|
|
}
|
|
}
|
|
|
|
function verifyNode () {
|
|
const fullVersion = process.versions.node
|
|
const majorVersion = fullVersion.split('.')[0]
|
|
if (majorVersion >= 6) {
|
|
console.log(`Node:\tv${fullVersion}`)
|
|
} else if (majorVersion >= 4) {
|
|
console.log(`Node:\tv${fullVersion}`)
|
|
console.warn('\tWarning: Building on Node below version 6 is deprecated. Please use Node 6.x+ to build Atom.')
|
|
} else {
|
|
throw new Error(`node v4+ is required to build Atom. node v${fullVersion} is installed.`)
|
|
}
|
|
}
|
|
|
|
function verifyNpm () {
|
|
const stdout = childProcess.execFileSync(CONFIG.getNpmBinPath(), ['--version'], {env: process.env})
|
|
const fullVersion = stdout.toString().trim()
|
|
const majorVersion = fullVersion.split('.')[0]
|
|
if (majorVersion >= 3) {
|
|
console.log(`Npm:\tv${fullVersion}`)
|
|
} else {
|
|
throw new Error(`npm v3+ is required to build Atom. npm v${fullVersion} was detected.`)
|
|
}
|
|
}
|
|
|
|
function verifyPython () {
|
|
const systemDrive = process.env.SystemDrive || 'C:\\'
|
|
let pythonExecutable
|
|
if (process.env.PYTHON) {
|
|
pythonExecutable = process.env.PYTHON
|
|
} else {
|
|
const pythonBinPath = path.join(systemDrive, 'Python27', 'python.exe')
|
|
if (fs.existsSync(pythonBinPath)) {
|
|
pythonExecutable = pythonBinPath
|
|
} else {
|
|
pythonExecutable = 'python'
|
|
}
|
|
}
|
|
|
|
let stdout = childProcess.execFileSync(pythonExecutable, ['-c', 'import platform\nprint(platform.python_version())'], {env: process.env})
|
|
if (stdout.indexOf('+') !== -1) stdout = stdout.replace(/\+/g, '')
|
|
if (stdout.indexOf('rc') !== -1) stdout = stdout.replace(/rc(.*)$/ig, '')
|
|
const fullVersion = stdout.toString().trim()
|
|
const versionComponents = fullVersion.split('.')
|
|
const majorVersion = Number(versionComponents[0])
|
|
const minorVersion = Number(versionComponents[1])
|
|
if (majorVersion === 2 && minorVersion === 7) {
|
|
console.log(`Python:\tv${fullVersion}`)
|
|
} else {
|
|
throw new Error(
|
|
`Python 2.7 is required to build Atom. ${pythonExecutable} returns version ${fullVersion}.\n` +
|
|
`Set the PYTHON env var to '/path/to/Python27/python.exe' if your python is installed in a non-default location.`
|
|
)
|
|
}
|
|
}
|