80 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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/atom-shell/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)
 | 
						|
  })
 | 
						|
})
 |