in gulpfile.js [191:255]
function(err, httpResponse, jiras) {
// Abort on error
if (err) {
return cb(err);
}
var pageCount = (jiras.total && jiras.maxResults) ? Math.ceil(jiras.total / jiras.maxResults) : 1;
var pageSize = jiras.maxResults;
console.log(project.name, 'matching jiras:', jiras.total, 'pageSize:', pageSize, 'pages:', pageCount);
// Iterate over multiple pages if more than one page is available
if (pageCount > 1) {
var apiRequests = [];
for (var i = 1; i < pageCount; i++) {
apiRequests[i-1] = _.extend({},
apiRequest,
{
startAt: i * pageSize,
maxResults: pageSize
}
);
}
// Execute async page loads for jiras spanning multiple pages
async.concat(apiRequests, function(apiPageRequest, pageCb){
request.post({
url: project.apiUrl + 'search',
json: apiPageRequest
},
function(err, httpResponse, pageJiras) {
// Abort on error
if (err) {
return pageCb(err);
}
pageCb(null, pageJiras.issues);
});
}, function(err, remainingJiras){
// Abort if error occurred somewhere
if (err) {
return cb(err);
}
cb(null, _.extend({}, project, {
jiras: jiras.issues.concat(remainingJiras).sort(function(a,b) {return naturalSort(a.key, b.key); }),
versions: unreleasedVersions
}));
});
} else {
// Return with a new project object with jiras. cb is from async.map call above
cb(null, _.extend({}, project, {
jiras: jiras.issues.sort(function(a,b) {return naturalSort(a.key, b.key); }),
versions: unreleasedVersions
}));
}
});