mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-20 15:37:46 +03:00
81 lines
2.1 KiB
JavaScript
Executable File
81 lines
2.1 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
console.log(process.env);
|
|
|
|
return
|
|
|
|
var child_process = require('child_process');
|
|
var fs = require('fs');
|
|
var path = require ('path');
|
|
|
|
var GitHub = require('github-releases');
|
|
var request = require('request');
|
|
|
|
var assetPath = '/tmp/atom-build/atom-mac-prerelease.zip';
|
|
var token = process.env.ATOM_ACCESS_TOKEN;
|
|
|
|
var zipApp = function(callback) {
|
|
if (fs.existsSync(assetPath))
|
|
fs.unlinkSync(assetPath)
|
|
|
|
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();
|
|
});
|
|
};
|
|
|
|
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 || releases.length === 0) {
|
|
console.error('No releases found in atom/atom repo');
|
|
process.exit(1);
|
|
}
|
|
|
|
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);
|
|
})
|
|
};
|
|
|
|
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',
|
|
'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);
|