From f4aa3b5e6d3c65ddca9da0cbe3e05f1b781317b1 Mon Sep 17 00:00:00 2001 From: khiav reoy Date: Thu, 5 Apr 2018 22:55:46 +0800 Subject: [PATCH 1/6] add getRepositoryUrl function --- bin/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/index.js b/bin/index.js index dddaaf7..4fccfdd 100755 --- a/bin/index.js +++ b/bin/index.js @@ -301,6 +301,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(); @@ -468,8 +473,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) { From b8aaf526875c9d7ec7e71b95bfda7c4628fcf066 Mon Sep 17 00:00:00 2001 From: khiav reoy Date: Thu, 5 Apr 2018 23:11:05 +0800 Subject: [PATCH 2/6] add compare url to tag --- bin/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bin/index.js b/bin/index.js index 4fccfdd..635b389 100755 --- a/bin/index.js +++ b/bin/index.js @@ -327,17 +327,24 @@ var tagger = function(sortedTags, data) { }; var prFormatter = function(data) { + var tags = []; var currentTagName = ''; var output = "## " + opts.title + "\n"; - data.forEach(function(pr){ + data.forEach(function(pr){ tags.push(pr.tag === null ? 'HEAD' : pr.tag.name); }); + var wrapUrl = function(name, idx){ + if (idx >= tags.length - 1) return; + var url = getRepositoryUrl()+'/compare/' + tags[idx + 1] + '...' + tags[idx]; + return "[" + name + "](" + url + ")"; + }; + data.forEach(function(pr, idx){ if (!opts['hide-tag-names']) { if (pr.tag === null) { currentTagName = opts['tag-name']; - output+= "\n### " + opts['tag-name']; + output+= "\n### " + wrapUrl(opts['tag-name'], idx); output+= "\n"; } else if (pr.tag.name != currentTagName) { currentTagName = pr.tag.name; - output+= "\n### " + pr.tag.name + output+= "\n### " + wrapUrl(pr.tag.name, idx); output+= " " + pr.tag.date.tz(opts['time-zone']).format(opts['date-format']); output+= "\n"; } From 67572e9c8d2e6ea4ddf561d54ae688a7e5f1ff2a Mon Sep 17 00:00:00 2001 From: khiav reoy Date: Thu, 5 Apr 2018 23:30:30 +0800 Subject: [PATCH 3/6] A tag may contains several PRs --- bin/index.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/bin/index.js b/bin/index.js index 635b389..51695ab 100755 --- a/bin/index.js +++ b/bin/index.js @@ -326,21 +326,35 @@ var tagger = function(sortedTags, data) { return current; }; +var getCompareUrls = function(data) { + var previousTagName = ''; + var currentTagName = ''; + var urls = []; + data.forEach(function(pr, idx){ + if (pr.tag === null) return; + var tagName = (pr.tag.name === 'upcoming' ? 'HEAD' : pr.tag.name); + if (tagName != currentTagName) { + previousTagName = currentTagName; + currentTagName = tagName; + if (previousTagName !== '') urls.push(getRepositoryUrl()+'/compare/'+currentTagName+'...'+previousTagName); + } + }); + return urls; +}; + var prFormatter = function(data) { - var tags = []; + var urls = getCompareUrls(data); var currentTagName = ''; var output = "## " + opts.title + "\n"; - data.forEach(function(pr){ tags.push(pr.tag === null ? 'HEAD' : pr.tag.name); }); var wrapUrl = function(name, idx){ - if (idx >= tags.length - 1) return; - var url = getRepositoryUrl()+'/compare/' + tags[idx + 1] + '...' + tags[idx]; - return "[" + name + "](" + url + ")"; + if (urls.length === 0) return name; + return "[" + name + "](" + urls.shift() + ")"; }; data.forEach(function(pr, idx){ if (!opts['hide-tag-names']) { if (pr.tag === null) { currentTagName = opts['tag-name']; - output+= "\n### " + wrapUrl(opts['tag-name'], idx); + output+= "\n### " + opts['tag-name']; output+= "\n"; } else if (pr.tag.name != currentTagName) { currentTagName = pr.tag.name; From 3c9307f92df43616fd91b27c0ecd08aa339d4925 Mon Sep 17 00:00:00 2001 From: khiav reoy Date: Thu, 5 Apr 2018 23:46:12 +0800 Subject: [PATCH 4/6] remove unneeded codes --- bin/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/index.js b/bin/index.js index 51695ab..0412f30 100755 --- a/bin/index.js +++ b/bin/index.js @@ -330,7 +330,7 @@ var getCompareUrls = function(data) { var previousTagName = ''; var currentTagName = ''; var urls = []; - data.forEach(function(pr, idx){ + data.forEach(function(pr){ if (pr.tag === null) return; var tagName = (pr.tag.name === 'upcoming' ? 'HEAD' : pr.tag.name); if (tagName != currentTagName) { @@ -346,11 +346,11 @@ var prFormatter = function(data) { var urls = getCompareUrls(data); var currentTagName = ''; var output = "## " + opts.title + "\n"; - var wrapUrl = function(name, idx){ + var wrapUrl = function(name){ if (urls.length === 0) return name; return "[" + name + "](" + urls.shift() + ")"; }; - data.forEach(function(pr, idx){ + data.forEach(function(pr){ if (!opts['hide-tag-names']) { if (pr.tag === null) { currentTagName = opts['tag-name']; @@ -358,7 +358,7 @@ var prFormatter = function(data) { output+= "\n"; } else if (pr.tag.name != currentTagName) { currentTagName = pr.tag.name; - output+= "\n### " + wrapUrl(pr.tag.name, idx); + output+= "\n### " + wrapUrl(pr.tag.name); output+= " " + pr.tag.date.tz(opts['time-zone']).format(opts['date-format']); output+= "\n"; } From 82d026bfe816ced93af807efc080c890b9c97216 Mon Sep 17 00:00:00 2001 From: khiav reoy Date: Fri, 21 Dec 2018 11:34:38 +0800 Subject: [PATCH 5/6] fix first tag is not added a link in some situation Ex: like this https://github.com/khiav223577/pluck_all/commit/bf5ea7b440b7fbe170c9c4145832f0d6a7496db2 --- bin/index.js | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/bin/index.js b/bin/index.js index 0412f30..1cc772e 100755 --- a/bin/index.js +++ b/bin/index.js @@ -316,40 +316,34 @@ 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['tag-name'], date: currentDate}; - return current; + if (!currTag) currTag = {name: opts['tag-name'], date: currentDate}; + return { currTag: currTag, prevTag: prevTag }; }; -var getCompareUrls = function(data) { - var previousTagName = ''; - var currentTagName = ''; - var urls = []; - data.forEach(function(pr){ +var getPrTag = function(pr) { + var url = (function(){ if (pr.tag === null) return; - var tagName = (pr.tag.name === 'upcoming' ? 'HEAD' : pr.tag.name); - if (tagName != currentTagName) { - previousTagName = currentTagName; - currentTagName = tagName; - if (previousTagName !== '') urls.push(getRepositoryUrl()+'/compare/'+currentTagName+'...'+previousTagName); - } - }); - return urls; + 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) { - var urls = getCompareUrls(data); var currentTagName = ''; var output = "## " + opts.title + "\n"; - var wrapUrl = function(name){ - if (urls.length === 0) return name; - return "[" + name + "](" + urls.shift() + ")"; - }; data.forEach(function(pr){ if (!opts['hide-tag-names']) { if (pr.tag === null) { @@ -358,7 +352,7 @@ var prFormatter = function(data) { output+= "\n"; } else if (pr.tag.name != currentTagName) { currentTagName = pr.tag.name; - output+= "\n### " + wrapUrl(pr.tag.name); + output+= "\n### " + getPrTag(pr); output+= " " + pr.tag.date.tz(opts['time-zone']).format(opts['date-format']); output+= "\n"; } @@ -550,7 +544,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; }) From 302da60d82ade64a34e93cd205585fe7fbfe1291 Mon Sep 17 00:00:00 2001 From: Rumble Huang Date: Fri, 21 Dec 2018 14:09:42 +0800 Subject: [PATCH 6/6] Update index.js --- bin/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/index.js b/bin/index.js index dddaaf7..b99844d 100755 --- a/bin/index.js +++ b/bin/index.js @@ -345,7 +345,7 @@ var prFormatter = function(data) { // output += " " + moment(pr.merged_at).utc().format(opts['date-format']); output += "\n"; }); - return output.trim(); + return output.trim() + "\n"; }; var getCommitsInMerge = function(mergeCommit) {