github_changelog_generator 1.15.0.pre.beta → 1.15.0.pre.rc

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55def2416dfef54779832b68f186965d4c62bbd0
4
- data.tar.gz: c9f978a6b01aab0356b676e7749f1b25d4aacc93
3
+ metadata.gz: ec76ed478bd8c2cf2500a55c75c1a9f12ffc46d6
4
+ data.tar.gz: 50192107d5f4ef52815262e08980c01a4c348781
5
5
  SHA512:
6
- metadata.gz: acdbbbae3679145b85639750184fffd39efe3d94ea2447f3429341655bd9ea94860f1a1eea65f970437ae2894aeffc145685ef34cda687acf90123d45dc7b6b0
7
- data.tar.gz: 7cf8cf180df005695f5d3882299ce4ad4ef3b504dd0bfbba9806efe925fc1ebc666224b00eacbeda63add590ccd3b74ad19b40032c4fb70df07778cca444c29a
6
+ metadata.gz: 2e40ddcaeb4205c6b44aee5ed18728eba7f6b27423055746edd39b180267d41276b86074dfc7d4c612f65f2218553a7d8fe6ccace873fbc7dd2b025f28dddad6
7
+ data.tar.gz: 79270b1372d108a8645a246933219804595e88c9226202736926ab511cc0cd780e2bff5654fe32d408363a34904bd5d92e24e39aff8eda49aa7225ee961b51ec
data/README.md CHANGED
@@ -1,285 +1,279 @@
1
- [![Gem Version](https://badge.fury.io/rb/github_changelog_generator.svg)](http://badge.fury.io/rb/github_changelog_generator)
2
- [![Dependency Status](https://gemnasium.com/skywinder/github-changelog-generator.svg)](https://gemnasium.com/skywinder/github-changelog-generator)
3
- [![Build Status](https://travis-ci.org/skywinder/github-changelog-generator.svg?branch=master)](https://travis-ci.org/skywinder/github-changelog-generator)
4
- [![Build status](https://ci.appveyor.com/api/projects/status/xdfnfmdjfo0upm7m?svg=true)](https://ci.appveyor.com/project/olleolleolle/github-changelog-generator)
5
- [![Inline docs](http://inch-ci.org/github/skywinder/github-changelog-generator.svg)](http://inch-ci.org/github/skywinder/github-changelog-generator)
6
- [![Code Climate](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/gpa.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
7
- [![Test Coverage](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/coverage.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
8
- [![Join the chat at https://gitter.im/github-changelog-generator/chat](https://badges.gitter.im/github-changelog-generator/chat.svg)](https://gitter.im/github-changelog-generator/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
9
-
10
- GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
11
- ==================
12
-
13
- - [Installation](#installation)
14
- - [Output example](#output-example)
15
- - [Usage](#usage)
16
- - [Params](#params)
17
- - [GitHub token](#github-token)
18
- - [Features and advantages of this project](#features-and-advantages-of-this-project)
19
- - [Alternatives](#alternatives)
20
- - [Projects using this library](#projects-using-this-library)
21
- - [Am I missing some essential feature?](#am-i-missing-some-essential-feature)
22
- - [Contributing](#contributing)
23
- - [License](#license)
24
-
25
-
26
- ### Changelog generation has never been so easy
27
-
28
- **Fully automated changelog generation** - This gem generates a change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according to labels) from :octocat: GitHub Issue Tracker.
29
-
30
- Since you don't have to fill your `CHANGELOG.md` manually now: just run the script, relax and take a cup of :coffee: before your next release! :tada:
31
-
32
- ### *What’s the point of a change log?*
33
-
34
- To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project.
35
-
36
- ### *Why should I care?*
37
-
38
- Because software tools are for _people_. "Changelogs make it easier for users and
39
- contributors to see precisely what notable changes have been made between each
40
- release (or version) of the project."
41
-
42
- :arrow_right: *[http://keepachangelog.com](http://keepachangelog.com)*
43
-
44
- ## Installation
45
-
46
- gem install github_changelog_generator
47
-
48
- See also Troubleshooting.
49
-
50
- ## Output example
51
-
52
- - Look at **[CHANGELOG.md](https://github.com/skywinder/Github-Changelog-Generator/blob/master/CHANGELOG.md)** for this project
53
- - [ActionSheetPicker-3.0/CHANGELOG.md](https://github.com/skywinder/ActionSheetPicker-3.0/blob/master/CHANGELOG.md) was generated by command:
54
-
55
- github_changelog_generator -u skywinder -p ActionSheetPicker-3.0
56
-
57
- - In general, it looks like this:
58
-
59
- > ## [1.2.5](https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.5) (2015-01-15)
60
- >
61
- > [Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.2.4...1.2.5)
62
- >
63
- > **Implemented enhancements:**
64
- >
65
- > - Use milestone to specify in which version bug was fixed [\#22](https://github.com/skywinder/Github-Changelog-Generator/issues/22)
66
- >
67
- > **Fixed bugs:**
68
- >
69
- > - Error when trying to generate log for repo without tags [\#32](https://github.com/skywinder/Github-Changelog-Generator/issues/32)
70
- >
71
- > **Merged pull requests:**
72
- >
73
- > - PrettyPrint class is included using lowercase 'pp' [\#43](https://github.com/skywinder/Github-Changelog-Generator/pull/43) ([schwing](https://github.com/schwing))
74
- >
75
- > - support enterprise github via command line options [\#42](https://github.com/skywinder/Github-Changelog-Generator/pull/42) ([glenlovett](https://github.com/glenlovett))
76
-
77
-
78
- ## Usage
79
-
80
- - Run this:
81
-
82
- `github_changelog_generator -u github_username -p github_project`
83
- `github_changelog_generator github_username/github_project`
84
-
85
- - For Github Enterprise repos, specify *both* `--github-site` and `--github-api` options:
86
-
87
- github_changelog_generator --github-site="https://github.yoursite.com" \
88
- --github-api="https://github.yoursite.com/api/v3/"
89
-
90
- This generates a `CHANGELOG.md`, with pretty Markdown formatting.
91
-
92
- ### Params
93
-
94
- Type `github_changelog_generator --help` for details.
95
-
96
- For more details about params, read the Wiki page: [**Advanced change log generation examples**](https://github.com/skywinder/github-changelog-generator/wiki/Advanced-change-log-generation-examples)
97
-
98
- ### Params File
99
-
100
- In your project root, you can put a params file named `.github_changelog_generator` to override default params:
101
-
102
- Example:
103
-
104
- ```
105
- unreleased=false
106
- future-release=5.0.0
107
- since-tag=1.0.0
108
- ```
109
-
110
- ### GitHub token
111
-
112
- GitHub only allows 50 unauthenticated requests per hour.
113
-
114
- Therefore, it's recommended to run this script with authentication by using a **token**.
115
-
116
- Here's how:
117
-
118
- - [Generate a token here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token) - you only need "repo" scope for private repositories
119
- - Either:
120
- - Run the script with `--token <your-40-digit-token>`; **OR**
121
- - Set the `CHANGELOG_GITHUB_TOKEN` environment variable to your 40 digit token
122
-
123
- You can set an environment variable by running the following command at the prompt, or by adding it to your shell profile (e.g., `~/.bash_profile` or `~/.zshrc`):
124
-
125
- export CHANGELOG_GITHUB_TOKEN="«your-40-digit-github-token»"
126
-
127
- So, if you get a message like this:
128
-
129
- ``` markdown
130
- API rate limit exceeded for github_username.
131
- See: https://developer.github.com/v3/#rate-limiting
132
- ```
133
-
134
- It's time to create this token! (Or, wait an hour for GitHub to reset your unauthenticated request limit.)
135
-
136
- ## Migrating from a manual changelog
137
-
138
- Knowing how dedicated you are to your project, you probably haven't been waiting for `github-changelog-generator` to keep a changelog.
139
- But you probably don't want your project's open issues and PRs for all past features listed in your historic changelog, either.
140
-
141
- That's where `--base <your-manual-changelog.md>` comes in handy!
142
- This option lets append your old manual changelog to the end of the generated entries.
143
-
144
- If you have a `HISTORY.md` file in your project, it will automatically be picked as the static historical changelog and appended.
145
-
146
- ### Rake task
147
-
148
- You love `rake`? We do, too! So, we've made it even easier for you:
149
- we've provided a `rake` task library for your changelog generation.
150
-
151
- Configure the task in your `Rakefile`:
152
-
153
- ```ruby
154
- require 'github_changelog_generator/task'
155
-
156
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
157
- config.since_tag = '0.1.14'
158
- config.future_release = '0.2.0'
159
- end
160
- ```
161
-
162
- All command-line options can be passed to the `rake` task as `config`
163
- parameters. And since you're naming the `rake` task yourself, you can create
164
- as many as you want.
165
-
166
- You can look for params names from the [parser source code (#setup_parser)](https://github.com/skywinder/github-changelog-generator/blob/master/lib/github_changelog_generator/parser.rb). For example, to translate the bugs label to Portuguese, instead of setting `config.bugs_label`, you have to set `config.bug_prefix`, and so on.
167
-
168
- ## Features and advantages of this project
169
-
170
- - Generate canonical, neat change log file, followed by [basic change log guidelines](http://keepachangelog.com) :gem:
171
- - Optionally generate **Unreleased** changes (closed issues that have not released yet) :dizzy:
172
- - **GitHub Enterprise support** via command line options! :factory:
173
- - Flexible format **customization**:
174
- - **Customize** issues that **should be added** to changelog :eight_spoked_asterisk:
175
- - **Custom date formats** supported (but keep [ISO 8601](http://xkcd.com/1179/) in mind!) :date:
176
- - Manually specify the version that fixed an issue (for cases when the issue's Closed date doesn't match) by giving the issue's `milestone` the same name as the tag of version :pushpin:
177
- - Automatically **exclude specific issues** that are irrelevant to your changelog (by default, any issue labeled `question`, `duplicate`, `invalid`, or `wontfix`) :scissors:
178
- - **Distinguish** issues **by labels**. :mag_right:
179
- - Merged pull requests (all merged pull-requests) :twisted_rightwards_arrows:
180
- - Bug fixes (issues labeled `bug`) :beetle:
181
- - Enhancements (issues labeled `enhancement`) :star2:
182
- - Issues (closed issues with no labels) :non-potable_water:
183
-
184
- - Manually include or exclude issues by labels :wrench:
185
- - Customize lots more! Tweak the changelog to fit your preferences :tophat:
186
- (*See `github_changelog_generator --help` for details)*
187
-
188
-
189
- ### Alternatives
190
-
191
- Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives) that I found. But none satisfied my requirements.
192
-
193
- *If you know other projects, feel free to edit this Wiki page!*
194
-
195
-
196
- ### Projects using this library
197
-
198
- Here's a [wikipage list of projects](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator).
199
-
200
- If you've used this project in a live app, please let me know! Nothing makes me happier than seeing someone else take my work and go wild with it.
201
-
202
- *If you are using `github_changelog_generator` to generate your project's changelog, or know of other projects using it, please [add it to this list] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator).*
203
-
204
- ## Am I missing some essential feature?
205
-
206
- - **Nothing is impossible!**
207
-
208
- - Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make the generator better together!
209
-
210
- - *Bug reports, feature requests, patches, and well-wishes are always welcome.* :heavy_exclamation_mark:
211
-
212
- ## FAQ
213
-
214
- - ***I already use GitHub Releases. Why do I need this?***
215
-
216
- GitHub Releases is a very good thing. And it's very good practice to maintain it. (Not a lot of people are using it yet!) :congratulations:
217
-
218
- *BTW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)*
219
-
220
- I'm not trying to compare the quality of handwritten and auto-generated logs. That said....
221
-
222
- An auto-generated changelog really helps, even if you manually fill in the release notes!
223
-
224
- For example:
225
-
226
- When you find a closed bug, it is very useful to know which release fixed it.
227
- So that you can easily find the issue by \# in `CHANGELOG.md`.
228
-
229
- - it's not quite as easy to find this in handwritten releases notes
230
- - a generated file saves you the trouble of remembering everything;
231
- sometimes people forget to add things to a handwritten file
232
-
233
- Ultimately, I think GitHub Releases are ideal for end-users.
234
- Meanwhile, `CHANGELOG.md` lives right in the repository, with its detailed list of changes, which is handy for developers.
235
- Finally, there's nothing wrong with using GitHub Releases alongside `CHANGELOG.md` in this combination.
236
-
237
- - ***I received a warning: "GitHub API rate limit exceed" What does this mean?***
238
-
239
- GitHub [limits the number of API requests](https://developer.github.com/v3/#rate-limiting) you can make in an hour. You can make up to 5,000 requests per hour. For unauthenticated requests, the rate limit is only up to 60 requests per hour. Unauthenticated requests are associated with your IP address (not the user making requests).
240
-
241
- If you're seeing this warning, please do the following:
242
-
243
- 1. Make sure you're providing an OAuth token, so you're not making requests anonymously. Using an OAuth token increases your hourly request maximum from 60 to 5000.
244
- 2. If you have a large repo with lots of issues/PRs, you can use `--max-issues NUM` to limit the number of issues that are pulled back. For example: `--max-issues 1000`
245
-
246
- - ***My Ruby version is very old, can I use this?***
247
-
248
- When your Ruby is old, and you don't want to upgrade, and you want to
249
- control which libraries you use, you can use Bundler.
250
-
251
- In a Gemfile, perhaps in a non-deployed `:development` group, add this
252
- gem:
253
-
254
- ```ruby
255
- group :development do
256
- gem 'github_changelog_generator', require: false
257
- end
258
- ```
259
-
260
- Then you can keep back dependencies like rack, which currently is only
261
- compatible with Ruby >= 2.2.2. So, use an older version for your app by
262
- adding a line like this to the Gemfile:
263
-
264
- ```
265
- gem 'rack', '~> 1.6'
266
- ```
267
-
268
- This way, you can keep on using github_changelog_generator, even if you
269
- can't get the latest version of Ruby installed.
270
-
271
- ## Contributing
272
-
273
- 1. Create an issue and describe your idea
274
- 2. [Fork it](https://github.com/skywinder/github-changelog-generator/fork)
275
- 3. Create your feature branch (`git checkout -b my-new-feature`)
276
- 4. Commit your changes (`git commit -am 'Add some feature'`)
277
- 5. Publish the branch (`git push origin my-new-feature`)
278
- 6. Create a new Pull Request
279
- 7. Profit! :white_check_mark:
280
-
281
- You can test your workflow with changelog generator with [the skywinder/changelog_test repo](https://github.com/skywinder/changelog_test/).
282
-
283
- ## License
284
-
285
- Github Changelog Generator is released under the [MIT License](http://www.opensource.org/licenses/MIT).
1
+ [![Gem Version](https://badge.fury.io/rb/github_changelog_generator.svg)](http://badge.fury.io/rb/github_changelog_generator)
2
+ [![Dependency Status](https://gemnasium.com/skywinder/github-changelog-generator.svg)](https://gemnasium.com/skywinder/github-changelog-generator)
3
+ [![Build Status](https://travis-ci.org/skywinder/github-changelog-generator.svg?branch=master)](https://travis-ci.org/skywinder/github-changelog-generator)
4
+ [![Build status](https://ci.appveyor.com/api/projects/status/xdfnfmdjfo0upm7m?svg=true)](https://ci.appveyor.com/project/olleolleolle/github-changelog-generator)
5
+ [![Inline docs](http://inch-ci.org/github/skywinder/github-changelog-generator.svg)](http://inch-ci.org/github/skywinder/github-changelog-generator)
6
+ [![Code Climate](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/gpa.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
7
+ [![Test Coverage](https://codeclimate.com/github/skywinder/github-changelog-generator/badges/coverage.svg)](https://codeclimate.com/github/skywinder/github-changelog-generator)
8
+ [![Join the chat at https://gitter.im/github-changelog-generator/chat](https://badges.gitter.im/github-changelog-generator/chat.svg)](https://gitter.im/github-changelog-generator/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
9
+
10
+ GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
11
+ ==================
12
+
13
+ - [Installation](#installation)
14
+ - [Output example](#output-example)
15
+ - [Usage](#usage)
16
+ - [Params](#params)
17
+ - [GitHub token](#github-token)
18
+ - [Features and advantages of this project](#features-and-advantages-of-this-project)
19
+ - [Alternatives](#alternatives)
20
+ - [Projects using this library](#projects-using-this-library)
21
+ - [Am I missing some essential feature?](#am-i-missing-some-essential-feature)
22
+ - [Contributing](#contributing)
23
+ - [License](#license)
24
+
25
+
26
+ ### Changelog generation has never been so easy
27
+
28
+ **Fully automated changelog generation** - This gem generates a change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according to labels) from :octocat: GitHub Issue Tracker.
29
+
30
+ Since you don't have to fill your `CHANGELOG.md` manually now: just run the script, relax and take a cup of :coffee: before your next release! :tada:
31
+
32
+ ### *What’s the point of a change log?*
33
+
34
+ To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project.
35
+
36
+ ### *Why should I care?*
37
+
38
+ Because software tools are for _people_. "Changelogs make it easier for users and
39
+ contributors to see precisely what notable changes have been made between each
40
+ release (or version) of the project."
41
+
42
+ :arrow_right: *[http://keepachangelog.com](http://keepachangelog.com)*
43
+
44
+ ## Installation
45
+
46
+ gem install github_changelog_generator
47
+
48
+ See also Troubleshooting.
49
+
50
+ ## Output example
51
+
52
+ - Look at **[CHANGELOG.md](https://github.com/skywinder/Github-Changelog-Generator/blob/master/CHANGELOG.md)** for this project
53
+ - [ActionSheetPicker-3.0/CHANGELOG.md](https://github.com/skywinder/ActionSheetPicker-3.0/blob/master/CHANGELOG.md) was generated by command:
54
+
55
+ github_changelog_generator -u skywinder -p ActionSheetPicker-3.0
56
+
57
+ - In general, it looks like this:
58
+
59
+ > ## [1.2.5](https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.5) (2015-01-15)
60
+ >
61
+ > [Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.2.4...1.2.5)
62
+ >
63
+ > **Implemented enhancements:**
64
+ >
65
+ > - Use milestone to specify in which version bug was fixed [\#22](https://github.com/skywinder/Github-Changelog-Generator/issues/22)
66
+ >
67
+ > **Fixed bugs:**
68
+ >
69
+ > - Error when trying to generate log for repo without tags [\#32](https://github.com/skywinder/Github-Changelog-Generator/issues/32)
70
+ >
71
+ > **Merged pull requests:**
72
+ >
73
+ > - PrettyPrint class is included using lowercase 'pp' [\#43](https://github.com/skywinder/Github-Changelog-Generator/pull/43) ([schwing](https://github.com/schwing))
74
+ >
75
+ > - support enterprise github via command line options [\#42](https://github.com/skywinder/Github-Changelog-Generator/pull/42) ([glenlovett](https://github.com/glenlovett))
76
+
77
+
78
+ ## Usage
79
+
80
+ - Run this:
81
+
82
+ `github_changelog_generator -u github_username -p github_project`
83
+ `github_changelog_generator github_username/github_project`
84
+
85
+ - For Github Enterprise repos, specify *both* `--github-site` and `--github-api` options:
86
+
87
+ github_changelog_generator --github-site="https://github.yoursite.com" \
88
+ --github-api="https://github.yoursite.com/api/v3/"
89
+
90
+ This generates a `CHANGELOG.md`, with pretty Markdown formatting.
91
+
92
+ ### Params
93
+
94
+ Type `github_changelog_generator --help` for details.
95
+
96
+ For more details about params, read the Wiki page: [**Advanced change log generation examples**](https://github.com/skywinder/github-changelog-generator/wiki/Advanced-change-log-generation-examples)
97
+
98
+ ### Params File
99
+
100
+ In your project root, you can put a params file named `.github_changelog_generator` to override default params:
101
+
102
+ Example:
103
+
104
+ ```
105
+ unreleased=false
106
+ future-release=5.0.0
107
+ since-tag=1.0.0
108
+ ```
109
+
110
+ ### GitHub token
111
+
112
+ GitHub only allows 50 unauthenticated requests per hour.
113
+
114
+ Therefore, it's recommended to run this script with authentication by using a **token**.
115
+
116
+ Here's how:
117
+
118
+ - [Generate a token here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token) - you only need "repo" scope for private repositories
119
+ - Either:
120
+ - Run the script with `--token <your-40-digit-token>`; **OR**
121
+ - Set the `CHANGELOG_GITHUB_TOKEN` environment variable to your 40 digit token
122
+
123
+ You can set an environment variable by running the following command at the prompt, or by adding it to your shell profile (e.g., `~/.bash_profile` or `~/.zshrc`):
124
+
125
+ export CHANGELOG_GITHUB_TOKEN="«your-40-digit-github-token»"
126
+
127
+ So, if you get a message like this:
128
+
129
+ ``` markdown
130
+ API rate limit exceeded for github_username.
131
+ See: https://developer.github.com/v3/#rate-limiting
132
+ ```
133
+
134
+ It's time to create this token! (Or, wait an hour for GitHub to reset your unauthenticated request limit.)
135
+
136
+ ## Migrating from a manual changelog
137
+
138
+ Knowing how dedicated you are to your project, you probably haven't been waiting for `github-changelog-generator` to keep a changelog.
139
+ But you probably don't want your project's open issues and PRs for all past features listed in your historic changelog, either.
140
+
141
+ That's where `--base <your-manual-changelog.md>` comes in handy!
142
+ This option lets append your old manual changelog to the end of the generated entries.
143
+
144
+ If you have a `HISTORY.md` file in your project, it will automatically be picked as the static historical changelog and appended.
145
+
146
+ ### Rake task
147
+
148
+ You love `rake`? We do, too! So, we've made it even easier for you:
149
+ we've provided a `rake` task library for your changelog generation.
150
+
151
+ Configure the task in your `Rakefile`:
152
+
153
+ ```ruby
154
+ require 'github_changelog_generator/task'
155
+
156
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
157
+ config.since_tag = '0.1.14'
158
+ config.future_release = '0.2.0'
159
+ end
160
+ ```
161
+
162
+ All command-line options can be passed to the `rake` task as `config`
163
+ parameters. And since you're naming the `rake` task yourself, you can create
164
+ as many as you want.
165
+
166
+ You can look for params names from the [parser source code (#setup_parser)](https://github.com/skywinder/github-changelog-generator/blob/master/lib/github_changelog_generator/parser.rb). For example, to translate the bugs label to Portuguese, instead of setting `config.bugs_label`, you have to set `config.bug_prefix`, and so on.
167
+
168
+ ## Features and advantages of this project
169
+
170
+ - Generate canonical, neat change log file, followed by [basic change log guidelines](http://keepachangelog.com) :gem:
171
+ - Optionally generate **Unreleased** changes (closed issues that have not released yet) :dizzy:
172
+ - **GitHub Enterprise support** via command line options! :factory:
173
+ - Flexible format **customization**:
174
+ - **Customize** issues that **should be added** to changelog :eight_spoked_asterisk:
175
+ - **Custom date formats** supported (but keep [ISO 8601](http://xkcd.com/1179/) in mind!) :date:
176
+ - Manually specify the version that fixed an issue (for cases when the issue's Closed date doesn't match) by giving the issue's `milestone` the same name as the tag of version :pushpin:
177
+ - Automatically **exclude specific issues** that are irrelevant to your changelog (by default, any issue labeled `question`, `duplicate`, `invalid`, or `wontfix`) :scissors:
178
+ - **Distinguish** issues **by labels**. :mag_right:
179
+ - Merged pull requests (all merged pull-requests) :twisted_rightwards_arrows:
180
+ - Bug fixes (issues labeled `bug`) :beetle:
181
+ - Enhancements (issues labeled `enhancement`) :star2:
182
+ - Issues (closed issues with no labels) :non-potable_water:
183
+
184
+ - Manually include or exclude issues by labels :wrench:
185
+ - Customize lots more! Tweak the changelog to fit your preferences :tophat:
186
+ (*See `github_changelog_generator --help` for details)*
187
+
188
+
189
+ ### Alternatives
190
+
191
+ Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives) that I found. But none satisfied my requirements.
192
+
193
+ *If you know other projects, feel free to edit this Wiki page!*
194
+
195
+
196
+ ### Projects using this library
197
+
198
+ Here's a [wikipage list of projects](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator).
199
+
200
+ If you've used this project in a live app, please let me know! Nothing makes me happier than seeing someone else take my work and go wild with it.
201
+
202
+ *If you are using `github_changelog_generator` to generate your project's changelog, or know of other projects using it, please [add it to this list](https://github.com/skywinder/github-changelog-generator/wiki/Projects-using-Github-Changelog-Generator).*
203
+
204
+ ## Am I missing some essential feature?
205
+
206
+ - **Nothing is impossible!**
207
+
208
+ - Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make the generator better together!
209
+
210
+ - *Bug reports, feature requests, patches, and well-wishes are always welcome.* :heavy_exclamation_mark:
211
+
212
+ ## FAQ
213
+
214
+ - ***I already use GitHub Releases. Why do I need this?***
215
+
216
+ GitHub Releases is a very good thing. And it's very good practice to maintain it. (Not a lot of people are using it yet!) :congratulations:
217
+
218
+ *BTW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)*
219
+
220
+ I'm not trying to compare the quality of handwritten and auto-generated logs. That said....
221
+
222
+ An auto-generated changelog really helps, even if you manually fill in the release notes!
223
+
224
+ For example:
225
+
226
+ When you find a closed bug, it is very useful to know which release fixed it.
227
+ So that you can easily find the issue by \# in `CHANGELOG.md`.
228
+
229
+ - it's not quite as easy to find this in handwritten releases notes
230
+ - a generated file saves you the trouble of remembering everything;
231
+ sometimes people forget to add things to a handwritten file
232
+
233
+ Ultimately, I think GitHub Releases are ideal for end-users.
234
+ Meanwhile, `CHANGELOG.md` lives right in the repository, with its detailed list of changes, which is handy for developers.
235
+ Finally, there's nothing wrong with using GitHub Releases alongside `CHANGELOG.md` in this combination.
236
+
237
+ - ***I received a warning: "GitHub API rate limit exceed" What does this mean?***
238
+
239
+ GitHub [limits the number of API requests](https://developer.github.com/v3/#rate-limiting) you can make in an hour. You can make up to 5,000 requests per hour. For unauthenticated requests, the rate limit is only up to 60 requests per hour. Unauthenticated requests are associated with your IP address (not the user making requests).
240
+
241
+ If you're seeing this warning, please do the following:
242
+
243
+ 1. Make sure you're providing an OAuth token, so you're not making requests anonymously. Using an OAuth token increases your hourly request maximum from 60 to 5000.
244
+ 2. If you have a large repo with lots of issues/PRs, you can use `--max-issues NUM` to limit the number of issues that are pulled back. For example: `--max-issues 1000`
245
+
246
+ - ***My Ruby version is very old, can I use this?***
247
+
248
+ When your Ruby is old, and you don't want to upgrade, and you want to
249
+ control which libraries you use, you can use Bundler.
250
+
251
+ In a Gemfile, perhaps in a non-deployed `:development` group, add this
252
+ gem:
253
+
254
+ ```ruby
255
+ group :development do
256
+ gem 'github_changelog_generator', require: false
257
+ end
258
+ ```
259
+
260
+ Then you can keep back dependencies like rack, which currently is only
261
+ compatible with Ruby >= 2.2.2. So, use an older version for your app by
262
+ adding a line like this to the Gemfile:
263
+
264
+ ```
265
+ gem 'rack', '~> 1.6'
266
+ ```
267
+
268
+ This way, you can keep on using github_changelog_generator, even if you
269
+ can't get the latest version of Ruby installed.
270
+
271
+ ## Contributing
272
+
273
+ We have collected notes on how to contribute to this project in [CONTRIBUTING.md].
274
+
275
+ [CONTRIBUTING.md]: CONTRIBUTING.md
276
+
277
+ ## License
278
+
279
+ Github Changelog Generator is released under the [MIT License](http://www.opensource.org/licenses/MIT).
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../octo_fetcher"
4
- require_relative "generator_generation"
5
- require_relative "generator_fetcher"
6
- require_relative "generator_processor"
7
- require_relative "generator_tags"
3
+ require "github_changelog_generator/octo_fetcher"
4
+ require "github_changelog_generator/generator/generator_generation"
5
+ require "github_changelog_generator/generator/generator_fetcher"
6
+ require "github_changelog_generator/generator/generator_processor"
7
+ require "github_changelog_generator/generator/generator_tags"
8
8
 
9
9
  module GitHubChangelogGenerator
10
10
  # Default error for ChangelogGenerator
@@ -6,6 +6,7 @@ module GitHubChangelogGenerator
6
6
  #
7
7
  # @return [String] Generated change log file
8
8
  def compound_changelog
9
+ options.load_custom_ruby_files
9
10
  fetch_and_filter_tags
10
11
  fetch_issues_and_pr
11
12
 
@@ -1,10 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "delegate"
4
+ require "github_changelog_generator/helper"
5
+
4
6
  module GitHubChangelogGenerator
7
+ # This class wraps Options, and knows a list of known options. Others options
8
+ # will raise exceptions.
5
9
  class Options < SimpleDelegator
10
+ # Raised on intializing with unknown keys in the values hash,
11
+ # and when trying to store a value on an unknown key.
6
12
  UnsupportedOptionError = Class.new(ArgumentError)
7
13
 
14
+ # List of valid option names
8
15
  KNOWN_OPTIONS = %i[
9
16
  add_issues_wo_labels
10
17
  add_pr_wo_labels
@@ -43,6 +50,7 @@ module GitHubChangelogGenerator
43
50
  pulls
44
51
  release_branch
45
52
  release_url
53
+ require
46
54
  simple_list
47
55
  since_tag
48
56
  ssl_ca_file
@@ -55,26 +63,56 @@ module GitHubChangelogGenerator
55
63
  verbose
56
64
  ]
57
65
 
66
+ # @param values [Hash]
67
+ #
68
+ # @raise [UnsupportedOptionError] if given values contain unknown options
58
69
  def initialize(values)
59
70
  super(values)
60
71
  unsupported_options.any? && raise(UnsupportedOptionError, unsupported_options.inspect)
61
72
  end
62
73
 
74
+ # Set option key to val.
75
+ #
76
+ # @param key [Symbol]
77
+ # @param val [Object]
78
+ #
79
+ # @raise [UnsupportedOptionError] when trying to set an unknown option
63
80
  def []=(key, val)
64
81
  supported_option?(key) || raise(UnsupportedOptionError, key.inspect)
65
82
  values[key] = val
66
83
  end
67
84
 
85
+ # @return [Hash]
68
86
  def to_hash
69
87
  values
70
88
  end
71
89
 
90
+ # Loads the configured Ruby files from the --require option.
91
+ def load_custom_ruby_files
92
+ self[:require].each { |f| require f }
93
+ end
94
+
95
+ # Pretty-prints a censored options hash, if :verbose.
96
+ def print_options
97
+ return unless self[:verbose]
98
+ Helper.log.info "Using these options:"
99
+ pp(censored_values)
100
+ puts ""
101
+ end
102
+
72
103
  private
73
104
 
74
105
  def values
75
106
  __getobj__
76
107
  end
77
108
 
109
+ # Returns a censored options hash.
110
+ #
111
+ # @return [Hash] The GitHub `:token` key is censored in the output.
112
+ def censored_values
113
+ values.clone.tap { |opts| opts[:token] = opts[:token].nil? ? "No token used" : "hidden value" }
114
+ end
115
+
78
116
  def unsupported_options
79
117
  values.keys - KNOWN_OPTIONS
80
118
  end
@@ -3,8 +3,9 @@
3
3
 
4
4
  require "optparse"
5
5
  require "pp"
6
- require_relative "version"
7
- require_relative "helper"
6
+ require "github_changelog_generator/version"
7
+ require "github_changelog_generator/helper"
8
+
8
9
  module GitHubChangelogGenerator
9
10
  class Parser
10
11
  # parse options with optparse
@@ -19,43 +20,34 @@ module GitHubChangelogGenerator
19
20
  abort [e, parser].join("\n")
20
21
  end
21
22
 
22
- abort(parser.banner) unless options[:user] && options[:project]
23
+ unless options[:user] && options[:project]
24
+ warn "Configure which user and project to work on."
25
+ warn "Options --user and --project, or settings to that effect. See --help for more."
26
+ abort(parser.banner)
27
+ end
23
28
 
24
- print_options(options)
29
+ options.print_options
25
30
 
26
31
  options
27
32
  end
28
33
 
29
- # If options set to verbose, print the parsed options.
34
+ # Setup parsing options
30
35
  #
31
- # The GitHub `:token` key is censored in the output.
32
- #
33
- # @param options [Hash] The options to display
34
- # @option options [Boolean] :verbose If false this method does nothing
35
- def self.print_options(options)
36
- if options[:verbose]
37
- Helper.log.info "Performing task with options:"
38
- options_to_display = options.clone
39
- options_to_display[:token] = options_to_display[:token].nil? ? nil : "hidden value"
40
- pp options_to_display
41
- puts ""
42
- end
43
- end
44
-
45
- # setup parsing options
36
+ # @param options [Options]
37
+ # @return [OptionParser]
46
38
  def self.setup_parser(options)
47
- parser = OptionParser.new do |opts| # rubocop:disable Metrics/BlockLength
48
- opts.banner = "Usage: github_changelog_generator [options]"
49
- opts.on("-u", "--user [USER]", "Username of the owner of target GitHub repo") do |last|
39
+ OptionParser.new do |opts| # rubocop:disable Metrics/BlockLength
40
+ opts.banner = "Usage: github_changelog_generator --user USER --project PROJECT [options]"
41
+ opts.on("-u", "--user USER", "Username of the owner of target GitHub repo") do |last|
50
42
  options[:user] = last
51
43
  end
52
- opts.on("-p", "--project [PROJECT]", "Name of project on GitHub") do |last|
44
+ opts.on("-p", "--project PROJECT", "Name of project on GitHub") do |last|
53
45
  options[:project] = last
54
46
  end
55
47
  opts.on("-t", "--token [TOKEN]", "To make more than 50 requests per hour your GitHub token is required. You can generate it at: https://github.com/settings/tokens/new") do |last|
56
48
  options[:token] = last
57
49
  end
58
- opts.on("-f", "--date-format [FORMAT]", "Date format. Default is %Y-%m-%d") do |last|
50
+ opts.on("-f", "--date-format FORMAT", "Date format. Default is %Y-%m-%d") do |last|
59
51
  options[:date_format] = last
60
52
  end
61
53
  opts.on("-o", "--output [NAME]", "Output file. Default is CHANGELOG.md") do |last|
@@ -121,7 +113,7 @@ module GitHubChangelogGenerator
121
113
  opts.on("--include-labels x,y,z", Array, "Only issues with the specified labels will be included in the changelog.") do |list|
122
114
  options[:include_labels] = list
123
115
  end
124
- opts.on("--exclude-labels x,y,z", Array, 'Issues with the specified labels will be always excluded from changelog. Default is \'duplicate,question,invalid,wontfix\'') do |list|
116
+ opts.on("--exclude-labels x,y,z", Array, "Issues with the specified labels will be always excluded from changelog. Default is 'duplicate,question,invalid,wontfix'") do |list|
125
117
  options[:exclude_labels] = list
126
118
  end
127
119
  opts.on("--bug-labels x,y,z", Array, 'Issues with the specified labels will be always added to "Fixed bugs" section. Default is \'bug,Bug\'') do |list|
@@ -181,6 +173,9 @@ module GitHubChangelogGenerator
181
173
  opts.on("--ssl-ca-file [PATH]", "Path to cacert.pem file. Default is a bundled lib/github_changelog_generator/ssl_certs/cacert.pem. Respects SSL_CA_PATH.") do |ssl_ca_file|
182
174
  options[:ssl_ca_file] = ssl_ca_file
183
175
  end
176
+ opts.on("--require x,y,z", Array, "Path to Ruby file(s) to require.") do |paths|
177
+ options[:require] = paths
178
+ end
184
179
  opts.on("--[no-]verbose", "Run verbosely. Default is true") do |v|
185
180
  options[:verbose] = v
186
181
  end
@@ -193,10 +188,9 @@ module GitHubChangelogGenerator
193
188
  exit
194
189
  end
195
190
  end
196
- parser
197
191
  end
198
192
 
199
- # @return [Hash] Default options
193
+ # @return [Options] Default options
200
194
  def self.default_options
201
195
  Options.new(
202
196
  date_format: "%Y-%m-%d",
@@ -226,7 +220,8 @@ module GitHubChangelogGenerator
226
220
  bug_prefix: "**Fixed bugs:**",
227
221
  enhancement_prefix: "**Implemented enhancements:**",
228
222
  breaking_prefix: "**Breaking changes:**",
229
- http_cache: true
223
+ http_cache: true,
224
+ require: []
230
225
  )
231
226
  end
232
227
  end
@@ -10,6 +10,7 @@ module GitHubChangelogGenerator
10
10
 
11
11
  OPTIONS = %w[ user project token date_format output
12
12
  bug_prefix enhancement_prefix issue_prefix
13
+ breaking_labels issue_line_labels
13
14
  header merge_prefix issues
14
15
  add_issues_wo_labels add_pr_wo_labels
15
16
  pulls filter_issues_by_milestone author
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitHubChangelogGenerator
4
- VERSION = "1.15.0-beta"
4
+ VERSION = "1.15.0-rc"
5
5
  end
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GIT\-GENERATE\-CHANGELOG" "1" "December 2016" "" ""
4
+ .TH "GIT\-GENERATE\-CHANGELOG" "1" "October 2017" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBgit\-generate\-changelog\fR \- Generate changelog from github
@@ -175,12 +175,6 @@ Issues with the specified labels will be always added to "Fixed bugs" section\.
175
175
  Issues with the specified labels will be always added to "Implemented enhancements" section\. Default is \'enhancement,Enhancement\'
176
176
  .
177
177
  .P
178
- \-\-between\-tags x,y,z
179
- .
180
- .P
181
- Change log will be filled only between specified tags
182
- .
183
- .P
184
178
  \-\-exclude\-tags x,y,z
185
179
  .
186
180
  .P
@@ -264,6 +258,25 @@ Filename to use for cache\. Default is github\-changelog\-http\-cache in a tempo
264
258
  .P
265
259
  Filename to use for cache log\. Default is github\-changelog\-logger\.log in a temporary directory\.
266
260
  .
261
+ .IP "" 4
262
+ .
263
+ .nf
264
+
265
+ \-\-ssl\-ca\-file [PATH]
266
+ .
267
+ .fi
268
+ .
269
+ .IP "" 0
270
+ .
271
+ .P
272
+ Path to cacert\.pem file\. Default is a bundled lib/github_changelog_generator/ssl_certs/cacert\.pem\. Respects SSL_CA_PATH\.
273
+ .
274
+ .P
275
+ \-\-require file1\.rb,file2\.rb
276
+ .
277
+ .P
278
+ Paths to Ruby file(s) to require before generating changelog\.
279
+ .
267
280
  .P
268
281
  \-\-[no\-]verbose
269
282
  .
@@ -248,6 +248,15 @@
248
248
 
249
249
  <p> Filename to use for cache log. Default is github-changelog-logger.log in a temporary directory.</p>
250
250
 
251
+ <pre><code>--ssl-ca-file [PATH]
252
+ </code></pre>
253
+
254
+ <p> Path to cacert.pem file. Default is a bundled lib/github_changelog_generator/ssl_certs/cacert.pem. Respects SSL_CA_PATH.</p>
255
+
256
+ <p> --require file1.rb,file2.rb</p>
257
+
258
+ <p> Paths to Ruby file(s) to require before generating changelog.</p>
259
+
251
260
  <p> --[no-]verbose</p>
252
261
 
253
262
  <p> Run verbosely. Default is true</p>
@@ -277,7 +286,7 @@
277
286
 
278
287
  <ol class='man-decor man-foot man foot'>
279
288
  <li class='tl'></li>
280
- <li class='tc'>December 2016</li>
289
+ <li class='tc'>October 2017</li>
281
290
  <li class='tr'>git-generate-changelog(1)</li>
282
291
  </ol>
283
292
 
@@ -177,7 +177,11 @@ Automatically generate change log from your tags, issues, labels and pull reques
177
177
 
178
178
  --ssl-ca-file [PATH]
179
179
 
180
- Path to cacert.pem file. Default is a bundled lib/github_changelog_generator/ssl_certs/cacert.pem. Respects SSL_CA_PATH.
180
+ Path to cacert.pem file. Default is a bundled lib/github_changelog_generator/ssl_certs/cacert.pem. Respects SSL_CA_PATH.
181
+
182
+ --require file1.rb,file2.rb
183
+
184
+ Paths to Ruby file(s) to require before generating changelog.
181
185
 
182
186
  --[no-]verbose
183
187
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_changelog_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0.pre.beta
4
+ version: 1.15.0.pre.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Korolev
@@ -9,36 +9,50 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-13 00:00:00.000000000 Z
12
+ date: 2017-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '10.0'
20
+ version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '10.0'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rainbow
29
+ name: faraday-http-cache
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.2.1
34
+ version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 2.2.1
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: multi_json
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: octokit
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -54,33 +68,33 @@ dependencies:
54
68
  - !ruby/object:Gem::Version
55
69
  version: '4.6'
56
70
  - !ruby/object:Gem::Dependency
57
- name: faraday-http-cache
71
+ name: rainbow
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
74
  - - ">="
61
75
  - !ruby/object:Gem::Version
62
- version: '0'
76
+ version: 2.2.1
63
77
  type: :runtime
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - ">="
68
82
  - !ruby/object:Gem::Version
69
- version: '0'
83
+ version: 2.2.1
70
84
  - !ruby/object:Gem::Dependency
71
- name: activesupport
85
+ name: rake
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - ">="
75
89
  - !ruby/object:Gem::Version
76
- version: '0'
90
+ version: '10.0'
77
91
  type: :runtime
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - ">="
82
96
  - !ruby/object:Gem::Version
83
- version: '0'
97
+ version: '10.0'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: retriable
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -95,20 +109,6 @@ dependencies:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
111
  version: '3.0'
98
- - !ruby/object:Gem::Dependency
99
- name: multi_json
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :runtime
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
112
  description: Changelog generation has never been so easy. Fully automate changelog
113
113
  generation - this gem generate change log file based on tags, issues and merged
114
114
  pull requests from Github issue tracker.