1 | #!/usr/bin/env node
|
2 | 'use strict';
|
3 |
|
4 | /*
|
5 | * This script generates the template a changelog by comparing a current version
|
6 | * with master. Run this, copy what's logged into the `CHANGELOG.md` and update
|
7 | * the top section based on the changes listed in "Community Contributions"
|
8 | *
|
9 | * Usage:
|
10 | *
|
11 | * bin/changelog
|
12 | */
|
13 |
|
14 | var EOL = require('os').EOL;
|
15 | var multiline = require('multiline');
|
16 | var Promise = require('ember-cli/lib/ext/promise');
|
17 | var GitHubApi = require('github');
|
18 |
|
19 | var github = new GitHubApi({version: '3.0.0'});
|
20 | var compareCommits = Promise.denodeify(github.repos.compareCommits);
|
21 | var currentVersion = 'v' + require('../package').version;
|
22 |
|
23 | var user = 'ember-cli-deploy';
|
24 | var repo = 'ember-cli-deploy-revision-data';
|
25 |
|
26 | compareCommits({
|
27 | user: user,
|
28 | repo: repo,
|
29 | base: currentVersion,
|
30 | head: 'master'
|
31 | }).then(function(res) {
|
32 | return res.commits.map(function(commitInfo) {
|
33 | return commitInfo.commit.message
|
34 |
|
35 | }).filter(function(message) {
|
36 | return message.indexOf('Merge pull request #') > -1;
|
37 |
|
38 | }).map(function(message) {
|
39 | var numAndAuthor = message.match(/#(\d+) from (.*)\//).slice(1,3);
|
40 | var title = message.split('\n\n')[1];
|
41 |
|
42 | return {
|
43 | number: +numAndAuthor[0],
|
44 | author: numAndAuthor[1],
|
45 | title: title
|
46 | };
|
47 |
|
48 | }).sort(function(a, b) {
|
49 | return a.number > b.number;
|
50 | }).map(function(pr) {
|
51 | var link = '[#' + pr.number + ']' +
|
52 | '(https://github.com/' + user + '/' + repo + '/pull/' + pr.number + ')';
|
53 | var title = pr.title;
|
54 | var author = '[@' + pr.author + ']' +
|
55 | '(https://github.com/' + pr.author +')';
|
56 |
|
57 | return '- ' + link + ' ' + title + ' ' + author;
|
58 |
|
59 | }).join('\n');
|
60 |
|
61 | }).then(function(contributions) {
|
62 | var changelog = generateChangelog(contributions);
|
63 |
|
64 | console.log(changelog);
|
65 | }).catch(function(err) {
|
66 | console.error(err);
|
67 | })
|
68 |
|
69 | function generateChangelog(contributions) {
|
70 | var header = multiline(function() {/*
|
71 | The following changes are required if you are upgrading from the previous
|
72 | version:
|
73 | - Users
|
74 | + Upgrade your project's ember-cli version - [docs](http://www.ember-cli.com/#project-update)
|
75 | - Addon Developers
|
76 | + No changes required
|
77 | - Core Contributors
|
78 | + No changes required
|
79 | #### Community Contributions
|
80 | */});
|
81 |
|
82 | var footer = 'Thank you to all who took the time to contribute!';
|
83 |
|
84 | return header + EOL + EOL + contributions + EOL + EOL + footer;
|
85 | }
|