github_changelog_generator 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +15 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +2 -0
- data/README.md +23 -11
- data/Rakefile +9 -0
- data/lib/github_changelog_generator.rb +24 -29
- data/lib/github_changelog_generator/generator.rb +34 -0
- data/lib/github_changelog_generator/parser.rb +11 -14
- data/lib/github_changelog_generator/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8155f1e7ea3677c3d367f637a07fb6de0cea418d
|
4
|
+
data.tar.gz: 4e2f2af6c503c0900dab6b473f03aaecaa23fa4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17d13e3e44f54241ced0f06c58b2f5fbfa24235a3e5c104c218157c15b063edabd84a39b096e6714a5cef539e733882170866364754d251d21fd570a211dacc6
|
7
|
+
data.tar.gz: fb0c0aa4a2173ad2b6137626270b25d2fe91821099b6f0f60fdd494ac58e627e54f27970afc9946b128eb0cb0e442b79e35a410235f43707a7d43a93a4f39790
|
data/.travis.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
language: ruby
|
2
|
+
before_install:
|
3
|
+
- gem update --system
|
4
|
+
- gem --version
|
5
|
+
rvm:
|
6
|
+
- 2.1.0
|
7
|
+
gemfile:
|
8
|
+
- Gemfile
|
9
|
+
|
10
|
+
notifications:
|
11
|
+
email:
|
12
|
+
recipients:
|
13
|
+
- sky4winder+githubchangeloggenerator@gmail.com
|
14
|
+
on_success: never # [always|never|change]
|
15
|
+
on_failure: change # [always|never|change]
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [1.2.1] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.1)
|
4
|
+
#### 22/11/14
|
5
|
+
- *Merged pull-request:* Issues for last tag not in list [\#29](https://github.com/skywinder/Github-Changelog-Generator/pull/29) ([skywinder](https://github.com/skywinder))
|
6
|
+
|
7
|
+
- *Merged pull-request:* Disable default --filter-pull-requests option. [\#28](https://github.com/skywinder/Github-Changelog-Generator/pull/28) ([skywinder](https://github.com/skywinder))
|
8
|
+
|
3
9
|
## [1.2.0] (https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.0)
|
4
10
|
#### 19/11/14
|
5
11
|
- *Merged pull-request:* Add filter for pull-requests labels. (option --filter-pull-requests) [\#27](https://github.com/skywinder/Github-Changelog-Generator/pull/27) ([skywinder](https://github.com/skywinder))
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -2,6 +2,7 @@ GitHub Changelog Generator
|
|
2
2
|
==================
|
3
3
|
|
4
4
|
[](http://badge.fury.io/rb/github_changelog_generator)
|
5
|
+
[](https://travis-ci.org/skywinder/Github-Changelog-Generator)
|
5
6
|
|
6
7
|
Changelog generation has never been so easy.
|
7
8
|
|
@@ -15,17 +16,17 @@ You're almost done!
|
|
15
16
|
## Usage
|
16
17
|
**It's really simple**:
|
17
18
|
|
18
|
-
- `
|
19
|
+
- If your **git remote** `origin` refer to your GitHub repo, then just go to your project folder just run:
|
19
20
|
|
20
21
|
github_changelog_generator
|
21
22
|
|
22
|
-
- from anywhere:
|
23
|
+
- or from anywhere:
|
23
24
|
|
24
25
|
github_changelog_generator -u github-username -p github-project
|
25
26
|
|
26
27
|
As output you will get `CHANGELOG.md` file with *pretty Markdown-formatted* changelog.
|
27
28
|
|
28
|
-
|
29
|
+
### Params:
|
29
30
|
Type `github_changelog_generator --help` for detailed usage.
|
30
31
|
|
31
32
|
Usage: changelog_generator [options]
|
@@ -44,22 +45,16 @@ Type `github_changelog_generator --help` for detailed usage.
|
|
44
45
|
--labels x,y,z List of labels. Issues with that labels will be included to changelog. Default is 'bug,enhancement'
|
45
46
|
-v, --version Print version number
|
46
47
|
|
47
|
-
## Examples:
|
48
|
-
|
49
|
-
- Look at **[CHANGELOG.md](https://github.com/skywinder/Github-Changelog-Generator/blob/master/CHANGELOG.md)** for **this** project
|
50
|
-
- [ActionSheetPicker-3.0/CHANGELOG.md](https://github.com/skywinder/ActionSheetPicker-3.0/blob/master/CHANGELOG.md) was generated by command:
|
51
|
-
|
52
|
-
github_changelog_generator -u skywinder -p ActionSheetPicker-3.0
|
53
48
|
|
49
|
+
### GitHub token
|
54
50
|
|
55
|
-
## FAQ:
|
56
51
|
Since GitHub allow to make only 50 requests without authentication it's recommended to run this script with token
|
57
52
|
|
58
53
|
**You can easily [generate it here](https://github.com/settings/applications)**.
|
59
54
|
|
60
55
|
And:
|
61
56
|
|
62
|
-
- Run with key `-t [your-16-digit-token]`
|
57
|
+
- Run with key `-t [your-16-digit-token]`
|
63
58
|
- Or set environment variable `CHANGELOG_GITHUB_TOKEN` and specify there your token.
|
64
59
|
|
65
60
|
i.e. add to your `~/.bash_profile` or `~/.zshrc` or any other place to load ENV variables string `export CHANGELOG_GITHUB_TOKEN="your-40-digit-github-token"'`
|
@@ -69,6 +64,19 @@ So, if you got error like this:
|
|
69
64
|
|
70
65
|
It's time to create this token or wait for 1 hour before GitHub reset the counter for your IP.
|
71
66
|
|
67
|
+
## Examples:
|
68
|
+
|
69
|
+
- Look at **[CHANGELOG.md](https://github.com/skywinder/Github-Changelog-Generator/blob/master/CHANGELOG.md)** for **this** project
|
70
|
+
- [ActionSheetPicker-3.0/CHANGELOG.md](https://github.com/skywinder/ActionSheetPicker-3.0/blob/master/CHANGELOG.md) was generated by command:
|
71
|
+
|
72
|
+
github_changelog_generator -u skywinder -p ActionSheetPicker-3.0
|
73
|
+
|
74
|
+
|
75
|
+
## Projects using this library
|
76
|
+
[Wikipage with list of projects](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator)
|
77
|
+
|
78
|
+
*If you are using `github_changelog_generator` for generation chamgelog in your project or know of project that uses it, please add it to [this] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) list.*
|
79
|
+
|
72
80
|
## Am I missed some essential feature?
|
73
81
|
|
74
82
|
**Nothing is impossible!** Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make generator better together!
|
@@ -87,3 +95,7 @@ It's time to create this token or wait for 1 hour before GitHub reset the counte
|
|
87
95
|
## License
|
88
96
|
|
89
97
|
Github Changelog Generator is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
98
|
+
|
99
|
+
|
100
|
+
[](https://bitdeli.com/free "Bitdeli Badge")
|
101
|
+
|
data/Rakefile
ADDED
@@ -4,6 +4,7 @@ require 'github_api'
|
|
4
4
|
require 'json'
|
5
5
|
require 'colorize'
|
6
6
|
require_relative 'github_changelog_generator/parser'
|
7
|
+
require_relative 'github_changelog_generator/generator'
|
7
8
|
require_relative 'github_changelog_generator/version'
|
8
9
|
|
9
10
|
module GitHubChangelogGenerator
|
@@ -29,6 +30,8 @@ module GitHubChangelogGenerator
|
|
29
30
|
@github = Github.new oauth_token: @github_token
|
30
31
|
end
|
31
32
|
|
33
|
+
@generator = Generator.new(@options)
|
34
|
+
|
32
35
|
@all_tags = self.get_all_tags
|
33
36
|
@pull_requests = self.get_all_closed_pull_requests
|
34
37
|
if @options[:issues]
|
@@ -111,7 +114,6 @@ module GitHubChangelogGenerator
|
|
111
114
|
if @options[:last]
|
112
115
|
log += self.generate_log_between_tags(self.all_tags[0], self.all_tags[1])
|
113
116
|
elsif @options[:tag1] and @options[:tag2]
|
114
|
-
|
115
117
|
tag1 = @options[:tag1]
|
116
118
|
tag2 = @options[:tag2]
|
117
119
|
tags_strings = []
|
@@ -140,7 +142,7 @@ module GitHubChangelogGenerator
|
|
140
142
|
output_filename = "#{@options[:output]}"
|
141
143
|
File.open(output_filename, 'w') { |file| file.write(log) }
|
142
144
|
|
143
|
-
puts "Done! Generated log placed in #{output_filename}"
|
145
|
+
puts "Done! Generated log placed in #{`pwd`.strip!}/#{output_filename}"
|
144
146
|
|
145
147
|
end
|
146
148
|
|
@@ -159,11 +161,11 @@ module GitHubChangelogGenerator
|
|
159
161
|
puts "Generating log.."
|
160
162
|
end
|
161
163
|
|
162
|
-
|
164
|
+
(1 ... self.all_tags.size).each { |index|
|
163
165
|
log += self.generate_log_between_tags(self.all_tags[index], self.all_tags[index-1])
|
164
|
-
|
166
|
+
}
|
165
167
|
|
166
|
-
log +=
|
168
|
+
log += generate_log_between_tags(nil, self.all_tags.last)
|
167
169
|
|
168
170
|
log
|
169
171
|
end
|
@@ -216,14 +218,14 @@ module GitHubChangelogGenerator
|
|
216
218
|
|
217
219
|
if older_tag.nil?
|
218
220
|
filtered_pull_requests = delete_by_time(@pull_requests, :merged_at, newer_tag_time)
|
219
|
-
|
221
|
+
filtered_issues = delete_by_time(@issues, :closed_at, newer_tag_time)
|
220
222
|
else
|
221
223
|
older_tag_time = self.get_time_of_tag(older_tag)
|
222
224
|
filtered_pull_requests = delete_by_time(@pull_requests, :merged_at, newer_tag_time, older_tag_time)
|
223
|
-
|
225
|
+
filtered_issues = delete_by_time(@issues, :closed_at, newer_tag_time, older_tag_time)
|
224
226
|
end
|
225
227
|
|
226
|
-
self.create_log(filtered_pull_requests,
|
228
|
+
self.create_log(filtered_pull_requests, filtered_issues, newer_tag_name, newer_tag_time)
|
227
229
|
|
228
230
|
end
|
229
231
|
|
@@ -241,7 +243,7 @@ module GitHubChangelogGenerator
|
|
241
243
|
tag_in_range_new = t <= newer_tag_time
|
242
244
|
|
243
245
|
tag_in_range = (tag_in_range_old) && (tag_in_range_new)
|
244
|
-
|
246
|
+
|
245
247
|
tag_in_range
|
246
248
|
else
|
247
249
|
false
|
@@ -249,15 +251,15 @@ module GitHubChangelogGenerator
|
|
249
251
|
}
|
250
252
|
end
|
251
253
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
254
|
+
# @param [Array] pull_requests
|
255
|
+
# @param [Array] issues
|
256
|
+
# @param [String] tag_name
|
257
|
+
# @param [String] tag_time
|
258
|
+
# @return [String]
|
256
259
|
def create_log(pull_requests, issues, tag_name, tag_time)
|
257
260
|
|
258
261
|
# Generate tag name and link
|
259
|
-
|
260
|
-
log = "## [#{trimmed_tag}] (https://github.com/#{@options[:user]}/#{@options[:project]}/tree/#{tag_name})\n"
|
262
|
+
log = "## [#{tag_name}] (https://github.com/#{@options[:user]}/#{@options[:project]}/tree/#{tag_name})\n"
|
261
263
|
|
262
264
|
#Generate date string:
|
263
265
|
time_string = tag_time.strftime @options[:format]
|
@@ -265,20 +267,11 @@ module GitHubChangelogGenerator
|
|
265
267
|
|
266
268
|
if @options[:pulls]
|
267
269
|
# Generate pull requests:
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
merge = "#{@options[:merge_prefix]}#{dict[:title]} [\\##{dict[:number]}](#{dict.html_url}) ([#{dict.user.login}](#{dict.user.html_url}))\n\n"
|
272
|
-
log += "- #{merge}"
|
273
|
-
}
|
274
|
-
else
|
275
|
-
pull_requests.each { |dict|
|
276
|
-
merge = "#{@options[:merge_prefix]}#{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n"
|
277
|
-
log += "- #{merge}"
|
278
|
-
}
|
279
|
-
end
|
270
|
+
pull_requests.each { |pull_request|
|
271
|
+
merge = @generator.get_string_for_pull_request(pull_request)
|
272
|
+
log += "- #{merge}"
|
280
273
|
|
281
|
-
|
274
|
+
} if pull_requests
|
282
275
|
end
|
283
276
|
|
284
277
|
if @options[:issues]
|
@@ -321,7 +314,9 @@ module GitHubChangelogGenerator
|
|
321
314
|
intro = 'Implemented enhancement'
|
322
315
|
end
|
323
316
|
|
324
|
-
|
317
|
+
enc_string = @generator.encapsulate_string dict[:title]
|
318
|
+
|
319
|
+
merge = "*#{intro}:* #{enc_string} [\\##{dict[:number]}](#{dict.html_url})\n\n"
|
325
320
|
log += "- #{merge}"
|
326
321
|
}
|
327
322
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module GitHubChangelogGenerator
|
2
|
+
class Generator
|
3
|
+
|
4
|
+
def initialize(options = nil)
|
5
|
+
@options = options
|
6
|
+
end
|
7
|
+
|
8
|
+
def get_string_for_pull_request(pull_request)
|
9
|
+
encapsulated_title = self.encapsulate_string pull_request[:title]
|
10
|
+
|
11
|
+
merge = "#{@options[:merge_prefix]}#{encapsulated_title} [\\##{pull_request[:number]}](#{pull_request.html_url})"
|
12
|
+
if @options[:author]
|
13
|
+
merge += " ([#{pull_request.user.login}](#{pull_request.user.html_url}))\n\n"
|
14
|
+
else
|
15
|
+
merge += "\n\n"
|
16
|
+
end
|
17
|
+
merge
|
18
|
+
end
|
19
|
+
|
20
|
+
def encapsulate_string(string)
|
21
|
+
|
22
|
+
string.gsub! '\\', '\\\\'
|
23
|
+
|
24
|
+
encpas_chars = %w(> * _ \( \) [ ])
|
25
|
+
encpas_chars.each{ |char|
|
26
|
+
string.gsub! char, "\\#{char}"
|
27
|
+
}
|
28
|
+
|
29
|
+
string
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -16,12 +16,14 @@ module GitHubChangelogGenerator
|
|
16
16
|
opts.on('-p', '--project [PROJECT]', 'Name of project on GitHub') do |last|
|
17
17
|
options[:project] = last
|
18
18
|
end
|
19
|
-
opts.on('-t', '--token [TOKEN]', 'To make more than 50 requests
|
19
|
+
opts.on('-t', '--token [TOKEN]', 'To make more than 50 requests per hour your GitHub token required. You can generate it here: https://github.com/settings/tokens/new') do |last|
|
20
20
|
options[:token] = last
|
21
21
|
end
|
22
|
-
opts.on('-
|
23
|
-
|
24
|
-
|
22
|
+
opts.on('-f', '--date-format [FORMAT]', 'Date format. Default is %d/%m/%y') do |last|
|
23
|
+
options[:format] = last
|
24
|
+
end
|
25
|
+
opts.on('-o', '--output [NAME]', 'Output file. Default is CHANGELOG.md') do |last|
|
26
|
+
options[:output] = last
|
25
27
|
end
|
26
28
|
opts.on('--[no-]verbose', 'Run verbosely. Default is true') do |v|
|
27
29
|
options[:verbose] = v
|
@@ -35,28 +37,23 @@ module GitHubChangelogGenerator
|
|
35
37
|
opts.on('--[no-]pull-requests', 'Include pull-requests to changelog. Default is true') do |v|
|
36
38
|
options[:pulls] = v
|
37
39
|
end
|
38
|
-
opts.on('-l', '--last-changes', 'Generate log between last 2 tags only') do |last|
|
39
|
-
options[:last] = last
|
40
|
-
end
|
41
40
|
opts.on('--[no-]author', 'Add author of pull-request in the end. Default is true') do |author|
|
42
41
|
options[:last] = author
|
43
42
|
end
|
44
|
-
opts.on('-f', '--date-format [FORMAT]', 'Date format. Default is %d/%m/%y') do |last|
|
45
|
-
options[:format] = last
|
46
|
-
end
|
47
|
-
opts.on('-o', '--output [NAME]', 'Output file. Default is CHANGELOG.md') do |last|
|
48
|
-
options[:output] = last
|
49
|
-
end
|
50
43
|
opts.on('--labels x,y,z', Array, 'Issues with that labels will be included to changelog. Default is \'bug,enhancement\'') do |list|
|
51
44
|
options[:labels] = list
|
52
45
|
end
|
53
|
-
opts.on('--
|
46
|
+
opts.on('--labels-pr x,y,z', Array, 'Only pull requests with specified labels will be included to changelog. Default is nil') do |list|
|
54
47
|
options[:pull_request_labels] = list
|
55
48
|
end
|
56
49
|
opts.on('-v', '--version', 'Print version number') do |v|
|
57
50
|
puts "Version: #{GitHubChangelogGenerator::VERSION}"
|
58
51
|
exit
|
59
52
|
end
|
53
|
+
opts.on('-h', '--help', 'Displays Help') do
|
54
|
+
puts opts
|
55
|
+
exit
|
56
|
+
end
|
60
57
|
}
|
61
58
|
|
62
59
|
parser.parse!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_changelog_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Korolev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -74,14 +74,17 @@ extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
76
|
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
77
78
|
- CHANGELOG.md
|
78
79
|
- Gemfile
|
79
80
|
- Gemfile.lock
|
80
81
|
- README.md
|
82
|
+
- Rakefile
|
81
83
|
- bin/github_changelog_generator
|
82
84
|
- bump_gemfile.rb
|
83
85
|
- github_changelog_generator.gemspec
|
84
86
|
- lib/github_changelog_generator.rb
|
87
|
+
- lib/github_changelog_generator/generator.rb
|
85
88
|
- lib/github_changelog_generator/parser.rb
|
86
89
|
- lib/github_changelog_generator/version.rb
|
87
90
|
homepage: https://github.com/skywinder/Github-Changelog-Generator
|
@@ -104,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
107
|
version: '0'
|
105
108
|
requirements: []
|
106
109
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.4.
|
110
|
+
rubygems_version: 2.4.4
|
108
111
|
signing_key:
|
109
112
|
specification_version: 4
|
110
113
|
summary: Script, that automatically generate change-log from your tags and pull-requests.
|