diff --git a/package.json b/package.json index f3e0388b6f..f6dd77767c 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,10 @@ ], "devDependencies": { - "atom-package-manager": "0.112.0", + "atom-package-manager": "0.122.0", "coffee-script": "~1.7.1", - "coffeelint": "~1.3.0" + "coffeelint": "~1.3.0", + "request": "*" }, "private": true, diff --git a/script/dump-version-info.js b/script/dump-version-info.js new file mode 100644 index 0000000000..9158dc06e7 --- /dev/null +++ b/script/dump-version-info.js @@ -0,0 +1,86 @@ +var app = require('app'); +var fs = require('fs'); +var path = require('path'); +var request = require('request'); + +var TARGET_URL = 'http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist/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 getApmVersion() { + var package = require(path.resolve(__dirname, '..', 'package.json')); + return package.devDependencies['atom-package-manager']; +} + +function getInfoForCurrentVersion() { + var json = {}; + json.version = process.versions['atom-shell']; + json.date = getDate(); + json.apm = getApmVersion(); + + 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', + ]; + + 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); + }); +}); diff --git a/script/upload.py b/script/upload.py index 7841017ed1..320bd0661a 100755 --- a/script/upload.py +++ b/script/upload.py @@ -190,6 +190,15 @@ def upload_node(bucket, access_key, secret_key, version): s3put(bucket, access_key, secret_key, OUT_DIR, 'atom-shell/dist/{0}'.format(version), [node_lib]) + # Upload the index.json + atom_shell = os.path.join(OUT_DIR, 'atom.exe') + index_json = os.path.join(OUT_DIR, 'index.json') + execute([atom_shell, + os.path.join(SOURCE_ROOT, 'script', 'dump-version-info.js'), + index_json]) + s3put(bucket, access_key, secret_key, OUT_DIR, 'atom-shell/dist', + [index_json]) + def auth_token(): token = os.environ.get('ATOM_SHELL_GITHUB_TOKEN')