ember-material-icons
Version:
Google Material icons for your ember-cli app
237 lines (184 loc) • 6.33 kB
JavaScript
'use strict';
require('babel-polyfill');
var Promise = require('bluebird');
var promisify = Promise.promisify;
var request = require('request-promise');
var Travis = require('travis-ci');
module.exports = function travisDeployOnce() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
token = _ref.token;
var _ref2, pro, travis, buildId, buildApi, _ref3, jobs, currentJobId, attempt, successes, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, jobId, jobApi, _ref4, job;
return regeneratorRuntime.async(function travisDeployOnce$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
token = token || process.env.GH_TOKEN;
if (token) {
_context.next = 3;
break;
}
throw new Error('GitHub token missing');
case 3:
if (!(!process.env.TRAVIS === 'true')) {
_context.next = 5;
break;
}
throw new Error('Not running on Travis');
case 5:
if (process.env.TRAVIS_JOB_NUMBER.endsWith('.1')) {
_context.next = 7;
break;
}
return _context.abrupt('return', null);
case 7:
if (!(process.env.TRAVIS_TEST_RESULT === '1')) {
_context.next = 9;
break;
}
return _context.abrupt('return', false);
case 9:
if (!(process.env.TRAVIS_TEST_RESULT !== '0')) {
_context.next = 11;
break;
}
throw new Error('Not running in Travis after_success hook');
case 11:
_context.next = 13;
return regeneratorRuntime.awrap(request({
json: true,
url: 'https://api.github.com/repos/' + process.env.TRAVIS_REPO_SLUG,
headers: {
Authorization: 'token ' + token,
'user-agent': 'travis-deploy-once'
}
}));
case 13:
_ref2 = _context.sent;
pro = _ref2.private;
travis = new Travis({
pro: pro,
version: '2.0.0',
headers: {
'user-agent': 'Travis'
}
});
_context.next = 18;
return regeneratorRuntime.awrap(promisify(travis.authenticate, { context: travis })({
github_token: token
}));
case 18:
buildId = parseInt(process.env.TRAVIS_BUILD_ID, 10);
buildApi = travis.builds(buildId);
_context.next = 22;
return regeneratorRuntime.awrap(promisify(buildApi.get, { context: buildApi })());
case 22:
_ref3 = _context.sent;
jobs = _ref3.build.job_ids;
currentJobId = parseInt(process.env.TRAVIS_JOB_ID, 10);
attempt = 1;
case 26:
if (!(attempt <= 100)) {
_context.next = 78;
break;
}
successes = 0;
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
_context.prev = 31;
_iterator = jobs[Symbol.iterator]();
case 33:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
_context.next = 56;
break;
}
jobId = _step.value;
if (!(jobId === currentJobId)) {
_context.next = 38;
break;
}
successes++;
return _context.abrupt('continue', 53);
case 38:
jobApi = travis.jobs(jobId);
_context.next = 41;
return regeneratorRuntime.awrap(promisify(jobApi.get, { context: jobApi })());
case 41:
_ref4 = _context.sent;
job = _ref4.job;
if (!job.allow_failure) {
_context.next = 46;
break;
}
successes++;
return _context.abrupt('continue', 53);
case 46:
if (!(job.state === 'created' || job.state === 'started')) {
_context.next = 49;
break;
}
console.error('[Travis Deploy Once]: Aborting attempt ' + attempt + ', because job ' + job.number + ' is still pending.');
return _context.abrupt('break', 56);
case 49:
if (!(job.state === 'errored' || job.state === 'failed')) {
_context.next = 52;
break;
}
console.error('[Travis Deploy Once]: Aborting at attempt ' + attempt + '. Job ' + job.number + ' failed.');
return _context.abrupt('return', false);
case 52:
if (job.state === 'passed') {
successes++;
}
case 53:
_iteratorNormalCompletion = true;
_context.next = 33;
break;
case 56:
_context.next = 62;
break;
case 58:
_context.prev = 58;
_context.t0 = _context['catch'](31);
_didIteratorError = true;
_iteratorError = _context.t0;
case 62:
_context.prev = 62;
_context.prev = 63;
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
case 65:
_context.prev = 65;
if (!_didIteratorError) {
_context.next = 68;
break;
}
throw _iteratorError;
case 68:
return _context.finish(65);
case 69:
return _context.finish(62);
case 70:
if (!(successes >= jobs.length)) {
_context.next = 73;
break;
}
console.error('[Travis Deploy Once]: Success at attempt ' + attempt + '. All ' + successes + ' jobs passed.');
return _context.abrupt('return', true);
case 73:
_context.next = 75;
return regeneratorRuntime.awrap(Promise.delay(3000));
case 75:
attempt++;
_context.next = 26;
break;
case 78:
throw new Error('Timeout. Could not get accumulated results after 100 attempts.');
case 79:
case 'end':
return _context.stop();
}
}
}, null, this, [[31, 58, 62, 70], [63,, 65, 69]]);
};