github_changelog_generator 1.13.0 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -0
- data/lib/github_changelog_generator/fetcher.rb +1 -1
- data/lib/github_changelog_generator/generator/generator_generation.rb +15 -10
- data/lib/github_changelog_generator/parser.rb +51 -30
- data/lib/github_changelog_generator/task.rb +1 -1
- data/lib/github_changelog_generator/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e430293bd753093d51737b3aaf29a26bae8ef4b
|
4
|
+
data.tar.gz: 364dbcfb8b20328bba88379a336aa45433eedc6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0521d48fb76e3c977ca363aae29ba92df2fd6b6784239b9c48c36ab06e3e72fe7e9ef942da314f46bb09322f8300beac8df7d55d7b83dabca7980dfbb1c4614d
|
7
|
+
data.tar.gz: 2bea3dbbe8ef1c41da35682c5234e00405a02cd44cc389d2d2a92b4e7f6b02f6b240a773aff9225393ffc5ef9d6ced71b279efd2dc03f8905c5f8187c01a4547
|
data/README.md
CHANGED
@@ -77,6 +77,11 @@ Because software tools are for people. If you don’t care, why are you contribu
|
|
77
77
|
- `github_changelog_generator -u github_username -p github_project`
|
78
78
|
- `github_changelog_generator github_username/github_project`
|
79
79
|
|
80
|
+
- If you are running it against a repository on a Github Enterprise install, you must specify *both* `--github-site` and `--github-api` command line options:
|
81
|
+
|
82
|
+
github_changelog_generator --github-site="https://github.yoursite.com" \
|
83
|
+
--github-api="https://github.yoursite.com/api/v3/"
|
84
|
+
|
80
85
|
This generates a changelog to the `CHANGELOG.md` file, with pretty markdown formatting.
|
81
86
|
|
82
87
|
### Params
|
@@ -133,6 +138,8 @@ we've provided a `rake` task library for your changelog generation.
|
|
133
138
|
Just put something like this in your `Rakefile`:
|
134
139
|
|
135
140
|
```ruby
|
141
|
+
require 'github_changelog_generator/task'
|
142
|
+
|
136
143
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
137
144
|
config.since_tag = '0.1.14'
|
138
145
|
config.future_release = '0.2.0'
|
@@ -71,7 +71,7 @@ module GitHubChangelogGenerator
|
|
71
71
|
response.each_page do |page|
|
72
72
|
page_i += PER_PAGE_NUMBER
|
73
73
|
print_in_same_line("Fetching tags... #{page_i}/#{count_pages * PER_PAGE_NUMBER}")
|
74
|
-
tags.concat(page)
|
74
|
+
tags.concat(page) unless page.nil?
|
75
75
|
end
|
76
76
|
print_empty_line
|
77
77
|
|
@@ -160,7 +160,7 @@ module GitHubChangelogGenerator
|
|
160
160
|
# Parse issue and generate single line formatted issue line.
|
161
161
|
#
|
162
162
|
# Example output:
|
163
|
-
# - Add coveralls integration [\#223](https://github.com/skywinder/github-changelog-generator/pull/223) (
|
163
|
+
# - Add coveralls integration [\#223](https://github.com/skywinder/github-changelog-generator/pull/223) (@skywinder)
|
164
164
|
#
|
165
165
|
# @param [Hash] issue Fetched issue from GitHub
|
166
166
|
# @return [String] Markdown-formatted single issue
|
@@ -168,17 +168,22 @@ module GitHubChangelogGenerator
|
|
168
168
|
encapsulated_title = encapsulate_string issue[:title]
|
169
169
|
|
170
170
|
title_with_number = "#{encapsulated_title} [\\##{issue[:number]}](#{issue.html_url})"
|
171
|
+
issue_line_with_user(title_with_number, issue)
|
172
|
+
end
|
171
173
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
174
|
+
private
|
175
|
+
|
176
|
+
def issue_line_with_user(line, issue)
|
177
|
+
return line if !@options[:author] || issue.pull_request.nil?
|
178
|
+
|
179
|
+
user = issue.user
|
180
|
+
return "#{line} ({Null user})" unless user
|
181
|
+
|
182
|
+
if @options[:usernames_as_github_logins]
|
183
|
+
"#{line} (@#{user.login})"
|
184
|
+
else
|
185
|
+
"#{line} ([#{user.login}](#{user.html_url}))"
|
180
186
|
end
|
181
|
-
title_with_number
|
182
187
|
end
|
183
188
|
end
|
184
189
|
end
|
@@ -23,7 +23,12 @@ module GitHubChangelogGenerator
|
|
23
23
|
options
|
24
24
|
end
|
25
25
|
|
26
|
-
#
|
26
|
+
# If options set to verbose, print the parsed options.
|
27
|
+
#
|
28
|
+
# The GitHub `:token` key is censored in the output.
|
29
|
+
#
|
30
|
+
# @param options [Hash] The options to display
|
31
|
+
# @option options [Boolean] :verbose If false this method does nothing
|
27
32
|
def self.print_options(options)
|
28
33
|
if options[:verbose]
|
29
34
|
Helper.log.info "Performing task with options:"
|
@@ -92,6 +97,9 @@ module GitHubChangelogGenerator
|
|
92
97
|
opts.on("--[no-]author", "Add author of pull-request in the end. Default is true") do |author|
|
93
98
|
options[:author] = author
|
94
99
|
end
|
100
|
+
opts.on("--usernames-as-github-logins", "Use GitHub tags instead of Markdown links for the author of an issue or pull-request.") do |v|
|
101
|
+
options[:usernames_as_github_logins] = v
|
102
|
+
end
|
95
103
|
opts.on("--unreleased-only", "Generate log from unreleased closed issues only.") do |v|
|
96
104
|
options[:unreleased_only] = v
|
97
105
|
end
|
@@ -167,7 +175,7 @@ module GitHubChangelogGenerator
|
|
167
175
|
parser
|
168
176
|
end
|
169
177
|
|
170
|
-
#
|
178
|
+
# @return [Hash] Default options
|
171
179
|
def self.default_options
|
172
180
|
{
|
173
181
|
tag1: nil,
|
@@ -199,13 +207,14 @@ module GitHubChangelogGenerator
|
|
199
207
|
}
|
200
208
|
end
|
201
209
|
|
210
|
+
# If `:user` or `:project` not set in options, try setting them
|
202
211
|
def self.user_and_project_from_git(options)
|
203
212
|
if options[:user].nil? || options[:project].nil?
|
204
213
|
detect_user_and_project(options, ARGV[0], ARGV[1])
|
205
214
|
end
|
206
215
|
end
|
207
216
|
|
208
|
-
#
|
217
|
+
# Sets `:user` and `:project` in `options` from CLI arguments or `git remote`
|
209
218
|
def self.detect_user_and_project(options, arg0 = nil, arg1 = nil)
|
210
219
|
options[:user], options[:project] = user_project_from_option(arg0, arg1, options[:github_site])
|
211
220
|
return if options[:user] && options[:project]
|
@@ -219,16 +228,23 @@ module GitHubChangelogGenerator
|
|
219
228
|
end
|
220
229
|
end
|
221
230
|
|
222
|
-
#
|
231
|
+
# Returns GitHub username and project from CLI arguments
|
223
232
|
#
|
224
|
-
# @param [String]
|
225
|
-
#
|
233
|
+
# @param arg0 [String] This parameter takes two forms: Either a full
|
234
|
+
# GitHub URL, or a 'username/projectname', or
|
235
|
+
# simply a GitHub username
|
236
|
+
# @param arg1 [String] If arg0 is given as a username,
|
237
|
+
# then arg1 can given as a projectname
|
238
|
+
# @param github_site [String] Domain name of GitHub site
|
239
|
+
#
|
240
|
+
# @return [Array, nil] user and project, or nil if unsuccessful
|
226
241
|
def self.user_project_from_option(arg0, arg1, github_site)
|
227
242
|
user = nil
|
228
243
|
project = nil
|
229
244
|
github_site ||= "github.com"
|
230
245
|
if arg0 && !arg1
|
231
|
-
# this match should parse strings such "https://github.com/skywinder/Github-Changelog-Generator" or
|
246
|
+
# this match should parse strings such "https://github.com/skywinder/Github-Changelog-Generator" or
|
247
|
+
# "skywinder/Github-Changelog-Generator" to user and name
|
232
248
|
puts arg0
|
233
249
|
match = /(?:.+#{Regexp.escape(github_site)}\/)?(.+)\/(.+)/.match(arg0)
|
234
250
|
|
@@ -248,35 +264,40 @@ module GitHubChangelogGenerator
|
|
248
264
|
[user, project]
|
249
265
|
end
|
250
266
|
|
251
|
-
#
|
267
|
+
# These patterns match these formats:
|
252
268
|
#
|
253
|
-
#
|
254
|
-
# @
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
269
|
+
# ```
|
270
|
+
# origin git@github.com:skywinder/Github-Changelog-Generator.git (fetch)
|
271
|
+
# git@github.com:skywinder/Github-Changelog-Generator.git
|
272
|
+
# ```
|
273
|
+
#
|
274
|
+
# and
|
275
|
+
#
|
276
|
+
# ```
|
277
|
+
# origin https://github.com/skywinder/ChangelogMerger (fetch)
|
278
|
+
# https://github.com/skywinder/ChangelogMerger
|
279
|
+
# ```
|
280
|
+
GIT_REMOTE_PATTERNS = [
|
281
|
+
/.*(?:[:\/])(?<user>(?:-|\w|\.)*)\/(?<project>(?:-|\w|\.)*)(?:\.git).*/,
|
282
|
+
/.*\/(?<user>(?:-|\w|\.)*)\/(?<project>(?:-|\w|\.)*).*/
|
283
|
+
]
|
267
284
|
|
285
|
+
# Returns GitHub username and project from git remote output
|
286
|
+
#
|
287
|
+
# @param git_remote_output [String] Output of git remote command
|
288
|
+
#
|
289
|
+
# @return [Array] user and project
|
290
|
+
def self.user_project_from_remote(git_remote_output)
|
268
291
|
user = nil
|
269
292
|
project = nil
|
270
|
-
|
271
|
-
|
293
|
+
GIT_REMOTE_PATTERNS.each do |git_remote_pattern|
|
294
|
+
git_remote_pattern =~ git_remote_output
|
272
295
|
|
273
|
-
if
|
274
|
-
|
275
|
-
|
276
|
-
|
296
|
+
if Regexp.last_match
|
297
|
+
user = Regexp.last_match(:user)
|
298
|
+
project = Regexp.last_match(:project)
|
299
|
+
break
|
277
300
|
end
|
278
|
-
|
279
|
-
break unless matches.nil?
|
280
301
|
end
|
281
302
|
|
282
303
|
[user, project]
|
@@ -14,7 +14,7 @@ module GitHubChangelogGenerator
|
|
14
14
|
unreleased_only unreleased unreleased_label
|
15
15
|
compare_link include_labels exclude_labels
|
16
16
|
bug_labels enhancement_labels
|
17
|
-
between_tags exclude_tags since_tag max_issues
|
17
|
+
between_tags exclude_tags exclude_tags_regex since_tag max_issues
|
18
18
|
github_site github_endpoint simple_list
|
19
19
|
future_release release_branch verbose release_url
|
20
20
|
base )
|
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.13.
|
4
|
+
version: 1.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Korolev
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
12
|
+
date: 2016-07-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|