Convert script/upload-release to CoffeeScript

This commit is contained in:
Kevin Sawicki 2013-12-10 08:22:06 -08:00
parent 11f8eba2c3
commit 4705e382bf
2 changed files with 48 additions and 68 deletions

View File

@ -33,7 +33,7 @@ cp.safeExec.bind(global, 'node script/bootstrap', function(error) {
require('rimraf').bind(global, path.join(homeDir, '.atom')),
cp.safeExec.bind(global, 'git clean -dff'),
cp.safeExec.bind(global, 'node node_modules/grunt-cli/bin/grunt ci --stack --no-color'),
cp.safeExec.bind(global, 'node script/upload-release')
cp.safeExec.bind(global, 'node_modules/.bin/coffee script/upload-release')
], function(error) {
process.exit(error ? 1 : 0);
});

View File

@ -1,80 +1,60 @@
#!/usr/bin/env node
#!/usr/bin/env coffee
console.log(process.env);
if process.env.JANKY_SHA1 and process.env.JANKY_BRANCH isnt 'ks-upload-release'
return
return
child_process = require 'child_process'
fs = require 'fs'
path = require 'path'
var child_process = require('child_process');
var fs = require('fs');
var path = require ('path');
GitHub = require 'github-releases'
request = require 'request'
var GitHub = require('github-releases');
var request = require('request');
assetPath = '/tmp/atom-build/atom-mac-prerelease.zip'
token = process.env.ATOM_ACCESS_TOKEN
var assetPath = '/tmp/atom-build/atom-mac-prerelease.zip';
var token = process.env.ATOM_ACCESS_TOKEN;
zipApp = (callback) ->
fs.unlinkSync(assetPath) if fs.existsSync(assetPath)
var zipApp = function(callback) {
if (fs.existsSync(assetPath))
fs.unlinkSync(assetPath)
options = {cwd: path.dirname(assetPath), maxBuffer: Infinity}
child_process.exec 'zip -r --symlinks atom-mac.zip Atom.app', options, (error, stdout, stderr) ->
if error?
console.error('Zipping Atom.app failed', error, stderr)
process.exit(1)
else
callback()
var options = {
cwd: path.dirname(assetPath),
maxBuffer: Infinity
};
child_process.exec('zip -r --symlinks atom-mac.zip Atom.app', options, function(error, stdout, stderr) {
if (error) {
console.error('Zipping Atom.app failed', error, stderr);
process.exit(1);
} else
callback();
});
};
getDraftRelease = (callback) ->
github = new GitHub({repo: 'atom/atom', token: token})
github.getReleases (error, releases=[]) ->
if error?
console.error('Fetching releases failed', error.message, error.stack)
process.exit(1)
var getDraftRelease = function(callback) {
var github = new GitHub({repo: 'atom/atom', token: token});
github.getReleases(function(error, releases) {
if (error) {
console.error('Fetching releases failed', error.message, error.stack);
process.exit(1);
}
if releases.length is 0
console.error('No releases found in atom/atom repo')
process.exit(1)
if (!releases || releases.length === 0) {
console.error('No releases found in atom/atom repo');
process.exit(1);
}
for release in releases when release.draft
callback(release)
return
var release = null;
for (var i = 0; i < releases.length; i++) {
release = releases[i];
if (release.draft) {
callback(release);
return;
}
}
console.error('No draft release found in atom/atom repo')
process.exit(1)
console.error('No draft release found in atom/atom repo');
process.exit(1);
})
};
var uploadAsset = function() {
getDraftRelease(function(release) {
var options = {
uri: "https://uploads.github.com/repos/atom/atom/releases/" + release.id + "/assets?name=" + path.basename(assetPath),
method: 'POST',
headers: {
Authorization: 'token ' + token,
'Content-Type': 'application/zip',
uploadAsset = ->
getDraftRelease (release) ->
options =
uri: "https://uploads.github.com/repos/atom/atom/releases/#{release.id}/assets?name=#{path.basename(assetPath)}"
method: 'POST'
headers:
Authorization: "token #{token}"
'Content-Type': 'application/zip'
'Content-Length': fs.statSync(assetPath).size
}
};
var upload = request(options, function(error, response, body) {
if (error || response.statusCode >= 400)
console.error('Upload release asset failed', error, body);
});
fs.createReadStream(assetPath).pipe(upload);
});
}
zipApp(uploadAsset);
upload = request options, (error, response, body) ->
if error or response.statusCode >= 400
console.error('Upload release asset failed', error, body)
fs.createReadStream(assetPath).pipe(upload)
zipApp(uploadAsset)