electron/tools/dump-version-info.js

80 lines
1.8 KiB
JavaScript

var app = require('electron').app
var fs = require('fs')
var request = require('request')
var TARGET_URL = 'https://atom.io/download/electron/index.json'
function getDate () {
var today = new Date()
var year = today.getFullYear()
var month = today.getMonth() + 1
if (month <= 9) month = '0' + month
var day = today.getDate()
if (day <= 9) day = '0' + day
return year + '-' + month + '-' + day
}
function getInfoForCurrentVersion () {
var json = {}
json.version = process.versions['atom-shell']
json.date = getDate()
var names = ['node', 'v8', 'uv', 'zlib', 'openssl', 'modules', 'chrome']
for (var i in names) {
var name = names[i]
json[name] = process.versions[name]
}
json.files = [
'darwin-x64',
'darwin-x64-symbols',
'linux-ia32',
'linux-ia32-symbols',
'linux-x64',
'linux-x64-symbols',
'win32-ia32',
'win32-ia32-symbols',
'win32-x64',
'win32-x64-symbols'
]
return json
}
function getIndexJsInServer (callback) {
request(TARGET_URL, function (e, res, body) {
if (e) {
callback(e)
} else if (res.statusCode !== 200) {
callback(new Error('Server returned ' + res.statusCode))
} else {
callback(null, JSON.parse(body))
}
})
}
function findObjectByVersion (all, version) {
for (var i in all) {
if (all[i].version === version) return i
}
return -1
}
app.on('ready', function () {
getIndexJsInServer(function (e, all) {
if (e) {
console.error(e)
process.exit(1)
}
var current = getInfoForCurrentVersion()
var found = findObjectByVersion(all, current.version)
if (found === -1) {
all.unshift(current)
} else {
all[found] = current
}
fs.writeFileSync(process.argv[2], JSON.stringify(all))
process.exit(0)
})
})