Skip to content
37 changes: 29 additions & 8 deletions bin/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,11 @@ var getAllCommits = function() {
});
};

var getRepositoryUrl = function() {
var host = (opts.host === 'api.github.com') ? 'github.com' : opts.host;
return "https://"+host+"/"+opts.owner+"/"+opts.repository;
};

var getData = function() {
if (opts.data === 'commits') return getAllCommits();
return getPullRequests();
Expand All @@ -190,14 +195,29 @@ var tagger = function(sortedTags, data) {
if (opts.data === 'commits') date = moment(data.commit.committer.date);
else date = moment(data.merged_at);

var current = null;
var prevTag = null;
var currTag = null;
for (var i=0, len=sortedTags.length; i < len; i++) {
var tag = sortedTags[i];
prevTag = tag;
if (tag.date < date) break;
current = tag;
currTag = tag;
}
if (!current) current = {name: opts.tagName, date: currentDate};
return current;
if (!currTag) currTag = {name: opts.tagName, date: currentDate};
return { currTag: currTag, prevTag: prevTag };
};

var getPrTag = function(pr) {
var url = (function(){
if (pr.tag === null) return;
if (pr.prevTag == null) return;
var currentTagName = (pr.tag.name === 'upcoming' ? 'HEAD' : pr.tag.name);
var previousTagName = pr.prevTag.name;
return getRepositoryUrl()+'/compare/'+previousTagName+'...'+currentTagName;
})();

if (url) return "[" + pr.tag.name + "](" + url + ")";
return pr.tag.name;
};

var prFormatter = function(data) {
Expand All @@ -211,7 +231,7 @@ var prFormatter = function(data) {
output+= "\n";
} else if (pr.tag.name != currentTagName) {
currentTagName = pr.tag.name;
output+= "\n### " + pr.tag.name
output+= "\n### " + getPrTag(pr);
output+= " " + pr.tag.date.tz(opts.timeZone).format(opts.dateFormat);
output+= "\n";
}
Expand Down Expand Up @@ -347,8 +367,7 @@ var commitFormatter = function(data) {
}


var host = (opts.host === 'api.github.com') ? 'github.com' : opts.host;
var url = "https://"+host+"/"+opts.owner+"/"+opts.repository+"/pull/"+prNumber;
var url = getRepositoryUrl()+"/pull/"+prNumber;
output += "- [#" + prNumber + "](" + url + ") " + message;

if (authors.length) {
Expand Down Expand Up @@ -410,7 +429,9 @@ var task = function() {
return data;
})
.map(function(data){
data.tag = tagger(allTags, data);
var tagInfo = tagger(allTags, data);
data.prevTag = tagInfo.prevTag;
data.tag = tagInfo.currTag;
data.tagDate = data.tag.date;
return data;
})
Expand Down