github_changelog_generator 1.15.2 → 1.16.4
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/README.md +8 -6
- data/Rakefile +1 -1
- data/lib/github_changelog_generator/argv_parser.rb +225 -0
- data/lib/github_changelog_generator/generator/entry.rb +10 -10
- data/lib/github_changelog_generator/generator/generator.rb +41 -19
- data/lib/github_changelog_generator/generator/generator_fetcher.rb +5 -9
- data/lib/github_changelog_generator/generator/generator_processor.rb +23 -20
- data/lib/github_changelog_generator/generator/generator_tags.rb +15 -9
- data/lib/github_changelog_generator/generator/section.rb +27 -7
- data/lib/github_changelog_generator/helper.rb +1 -1
- data/lib/github_changelog_generator/octo_fetcher.rb +196 -149
- data/lib/github_changelog_generator/options.rb +4 -0
- data/lib/github_changelog_generator/parser.rb +70 -248
- data/lib/github_changelog_generator/parser_file.rb +29 -14
- data/lib/github_changelog_generator/reader.rb +4 -2
- data/lib/github_changelog_generator/ssl_certs/cacert.pem +851 -1756
- data/lib/github_changelog_generator/task.rb +3 -2
- data/lib/github_changelog_generator/version.rb +1 -1
- data/man/git-generate-changelog.1 +46 -34
- data/man/git-generate-changelog.1.html +39 -31
- data/man/git-generate-changelog.html +19 -19
- data/man/git-generate-changelog.md +39 -31
- data/spec/files/config_example +5 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/generator/entry_spec.rb +37 -31
- data/spec/unit/generator/generator_processor_spec.rb +99 -44
- data/spec/unit/generator/generator_spec.rb +47 -0
- data/spec/unit/generator/generator_tags_spec.rb +46 -3
- data/spec/unit/generator/section_spec.rb +34 -0
- data/spec/unit/octo_fetcher_spec.rb +45 -5
- data/spec/unit/parser_spec.rb +50 -0
- data/spec/unit/reader_spec.rb +9 -0
- metadata +44 -23
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "github_changelog_generator/generator/generator"
|
4
|
+
|
5
|
+
RSpec.describe GitHubChangelogGenerator::Generator do
|
6
|
+
let(:header) { "# Changelog" }
|
7
|
+
let(:generator) { described_class.new({ header: header }) }
|
8
|
+
let(:content) do
|
9
|
+
<<~'BASE'
|
10
|
+
## [1.3.10](https://github.com/xxx/yyy/tree/1.3.10) (2015-03-18)
|
11
|
+
|
12
|
+
[Full Changelog](https://github.com/xxx/yyy/compare/1.3.9...1.3.10)
|
13
|
+
|
14
|
+
**Fixed bugs:**
|
15
|
+
|
16
|
+
|
17
|
+
BASE
|
18
|
+
end
|
19
|
+
let(:footer) do
|
20
|
+
<<~CREDIT
|
21
|
+
\\* *This Changelog was automatically generated \
|
22
|
+
by [github_changelog_generator]\
|
23
|
+
(https://github.com/github-changelog-generator/github-changelog-generator)*
|
24
|
+
CREDIT
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when the given base file has previously appended template messages" do
|
28
|
+
describe "#remove_old_fixed_string" do
|
29
|
+
it "removes old template headers and footers" do
|
30
|
+
log = +"#{header}\n\n#{header}\n#{header}#{content}\n\n#{footer}\n#{footer}#{footer}"
|
31
|
+
|
32
|
+
expect(generator.send(:remove_old_fixed_string, log)).to eq content
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "when plain contents string was given" do
|
38
|
+
describe "#insert_fixed_string" do
|
39
|
+
it "append template messages at header and footer" do
|
40
|
+
log = String.new(content)
|
41
|
+
ans = "#{header}\n\n#{content}\n\n#{footer}"
|
42
|
+
|
43
|
+
expect(generator.send(:insert_fixed_string, log)).to eq ans
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -13,6 +13,33 @@ describe GitHubChangelogGenerator::Generator do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
describe "#detect_link_tag_time" do
|
17
|
+
let(:newer_tag) { nil }
|
18
|
+
|
19
|
+
let(:default_options) { GitHubChangelogGenerator::Parser.default_options.merge(verbose: false) }
|
20
|
+
let(:options) do
|
21
|
+
{
|
22
|
+
future_release: "2.0.0"
|
23
|
+
}
|
24
|
+
end
|
25
|
+
let(:generator) { described_class.new(default_options.merge(options)) }
|
26
|
+
|
27
|
+
subject do
|
28
|
+
generator.detect_link_tag_time(newer_tag)
|
29
|
+
end
|
30
|
+
|
31
|
+
context "When the local date is not the same as the UTC date" do
|
32
|
+
before do
|
33
|
+
# 2020-12-27T17:00:00-10:00 is 2020-12-28T03:00:00Z.
|
34
|
+
# GitHub API date & time use UTC, so this instant when converted as a
|
35
|
+
# date should be 2020-12-28.
|
36
|
+
expect(Time).to receive(:new).and_return(Time.new(2020, 12, 27, 17, 0, 0, "-10:00"))
|
37
|
+
end
|
38
|
+
|
39
|
+
it { is_expected.to eq(["2.0.0", "2.0.0", Time.gm(2020, 12, 28, 3)]) }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
16
43
|
describe "#tag_section_mapping" do
|
17
44
|
let(:all_tags) { tags_from_strings(%w[8 7 6 5 4 3 2 1]) }
|
18
45
|
let(:sorted_tags) { all_tags }
|
@@ -57,10 +84,10 @@ describe GitHubChangelogGenerator::Generator do
|
|
57
84
|
shared_examples_for "a changelog with some exclusions" do
|
58
85
|
let(:expected_mapping) do
|
59
86
|
{
|
60
|
-
tag_with_name("8") => [tag_with_name("
|
61
|
-
tag_with_name("6") => [tag_with_name("
|
87
|
+
tag_with_name("8") => [tag_with_name("6"), tag_with_name("8")],
|
88
|
+
tag_with_name("6") => [tag_with_name("4"), tag_with_name("6")],
|
62
89
|
tag_with_name("4") => [tag_with_name("3"), tag_with_name("4")],
|
63
|
-
tag_with_name("3") => [tag_with_name("
|
90
|
+
tag_with_name("3") => [tag_with_name("1"), tag_with_name("3")],
|
64
91
|
tag_with_name("1") => [nil, tag_with_name("1")]
|
65
92
|
}
|
66
93
|
end
|
@@ -130,6 +157,22 @@ describe GitHubChangelogGenerator::Generator do
|
|
130
157
|
end
|
131
158
|
end
|
132
159
|
|
160
|
+
describe "#filter_included_tags_regex" do
|
161
|
+
subject { generator.filter_included_tags(tags_from_strings(%w[1 2 3])) }
|
162
|
+
|
163
|
+
context "with matching regex" do
|
164
|
+
let(:generator) { GitHubChangelogGenerator::Generator.new(include_tags_regex: "[23]") }
|
165
|
+
it { is_expected.to be_a Array }
|
166
|
+
it { is_expected.to match_array(tags_from_strings(%w[2 3])) }
|
167
|
+
end
|
168
|
+
|
169
|
+
context "with non-matching regex" do
|
170
|
+
let(:generator) { GitHubChangelogGenerator::Generator.new(include_tags_regex: "[45]") }
|
171
|
+
it { is_expected.to be_a Array }
|
172
|
+
it { is_expected.to match_array(tags_from_strings(%w[])) }
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
133
176
|
describe "#filter_excluded_tags" do
|
134
177
|
subject { generator.filter_excluded_tags(tags_from_strings(%w[1 2 3])) }
|
135
178
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GitHubChangelogGenerator
|
4
|
+
RSpec.describe Section do
|
5
|
+
let(:options) { {} }
|
6
|
+
subject(:section) { described_class.new(options) }
|
7
|
+
|
8
|
+
describe "#encapsulate_string" do
|
9
|
+
let(:string) { "" }
|
10
|
+
|
11
|
+
context "with the empty string" do
|
12
|
+
it "returns the string" do
|
13
|
+
expect(section.send(:encapsulate_string, string)).to eq string
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "with a string with an escape-needing character in it" do
|
18
|
+
let(:string) { "<Inside> and outside" }
|
19
|
+
|
20
|
+
it "returns the string escaped" do
|
21
|
+
expect(section.send(:encapsulate_string, string)).to eq '\\<Inside\\> and outside'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "with a backticked string with an escape-needing character in it" do
|
26
|
+
let(:string) { 'back `\` slash' }
|
27
|
+
|
28
|
+
it "returns the string" do
|
29
|
+
expect(section.send(:encapsulate_string, string)).to eq 'back `\` slash'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -29,9 +29,6 @@ describe GitHubChangelogGenerator::OctoFetcher do
|
|
29
29
|
|
30
30
|
context "when raises Octokit::Forbidden" do
|
31
31
|
it "sleeps and retries and then aborts" do
|
32
|
-
retry_limit = GitHubChangelogGenerator::OctoFetcher::MAX_FORBIDDEN_RETRIES - 1
|
33
|
-
allow(fetcher).to receive(:sleep_base_interval).exactly(retry_limit).times.and_return(0)
|
34
|
-
|
35
32
|
expect(fetcher).to receive(:sys_abort).with("Exceeded retry limit")
|
36
33
|
fetcher.send(:check_github_response) { raise(Octokit::Forbidden) }
|
37
34
|
end
|
@@ -85,6 +82,49 @@ describe GitHubChangelogGenerator::OctoFetcher do
|
|
85
82
|
end
|
86
83
|
end
|
87
84
|
|
85
|
+
describe "#fetch_tag_shas" do
|
86
|
+
let(:commits) do
|
87
|
+
[
|
88
|
+
{ sha: "0", parents: [{ sha: "1" }, { sha: "6" }] },
|
89
|
+
{ sha: "1", parents: [{ sha: "2" }] },
|
90
|
+
{ sha: "2", parents: [{ sha: "3" }] },
|
91
|
+
{ sha: "3", parents: [{ sha: "4" }] },
|
92
|
+
{ sha: "4", parents: [{ sha: "5" }] },
|
93
|
+
{ sha: "5", parents: [] },
|
94
|
+
{ sha: "6", parents: [{ sha: "7" }, { sha: "8" }] },
|
95
|
+
{ sha: "7", parents: [{ sha: "9" }, { sha: "10" }] },
|
96
|
+
{ sha: "8", parents: [{ sha: "11" }, { sha: "12" }] },
|
97
|
+
{ sha: "9", parents: [] },
|
98
|
+
{ sha: "10", parents: [] },
|
99
|
+
{ sha: "11", parents: [] },
|
100
|
+
{ sha: "12", parents: [] }
|
101
|
+
]
|
102
|
+
end
|
103
|
+
|
104
|
+
let(:tag0) { { "name" => "tag-0", "commit" => { "sha" => "0" } } }
|
105
|
+
let(:tag1) { { "name" => "tag-1", "commit" => { "sha" => "1" } } }
|
106
|
+
let(:tag6) { { "name" => "tag-6", "commit" => { "sha" => "6" } } }
|
107
|
+
|
108
|
+
before do
|
109
|
+
allow(fetcher).to receive(:commits).and_return(commits)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should find all shas with single parents" do
|
113
|
+
fetcher.fetch_tag_shas([tag1])
|
114
|
+
expect(tag1["shas_in_tag"]).to eq(Set.new(%w[1 2 3 4 5]))
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should find all shas with multiple parents" do
|
118
|
+
fetcher.fetch_tag_shas([tag6])
|
119
|
+
expect(tag6["shas_in_tag"]).to eq(Set.new(%w[6 7 8 9 10 11 12]))
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should find all shas with mixed parents" do
|
123
|
+
fetcher.fetch_tag_shas([tag0])
|
124
|
+
expect(tag0["shas_in_tag"]).to eq(Set.new(%w[0 1 2 3 4 5 6 7 8 9 10 11 12]))
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
88
128
|
describe "#github_fetch_tags" do
|
89
129
|
context "when wrong token provided", :vcr do
|
90
130
|
let(:options) do
|
@@ -207,7 +247,7 @@ describe GitHubChangelogGenerator::OctoFetcher do
|
|
207
247
|
|
208
248
|
# Convert times to Time
|
209
249
|
expected_issue.each_pair do |k, v|
|
210
|
-
expected_issue[k] = Time.parse(v) if v.to_s
|
250
|
+
expected_issue[k] = Time.parse(v) if v.to_s.start_with?("2015-")
|
211
251
|
end
|
212
252
|
|
213
253
|
expect(issues.first).to eq(expected_issue)
|
@@ -269,7 +309,7 @@ describe GitHubChangelogGenerator::OctoFetcher do
|
|
269
309
|
|
270
310
|
# Convert times to Time
|
271
311
|
expected_pr.each_pair do |k, v|
|
272
|
-
expected_pr[k] = Time.parse(v) if v.to_s
|
312
|
+
expected_pr[k] = Time.parse(v) if v.to_s.start_with?("2016-01")
|
273
313
|
end
|
274
314
|
|
275
315
|
expect(pull_requests.first).to eq(expected_pr)
|
data/spec/unit/parser_spec.rb
CHANGED
@@ -1,4 +1,54 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
describe GitHubChangelogGenerator::Parser do
|
4
|
+
let(:argv) { [] }
|
5
|
+
|
6
|
+
before do
|
7
|
+
# Calling abort will abort the test run, allow calls to abort to not accidentaly get positive falses
|
8
|
+
allow(Kernel).to receive(:abort)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".parse_options" do
|
12
|
+
context "when required arguments are given" do
|
13
|
+
let(:argv) { ["--user", "the user", "--project", "the_project"] }
|
14
|
+
|
15
|
+
it "executes and prints the configuration" do
|
16
|
+
expect { described_class.parse_options(argv) }.to output(/config_file=>".github_changelog_generator"/).to_stdout
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when --config-file is overridden to something that is not there" do
|
21
|
+
let(:argv) { ["--config-file", "does_not_exist"] }
|
22
|
+
|
23
|
+
it "aborts the execution" do
|
24
|
+
expect(Kernel).to receive(:abort)
|
25
|
+
expect { described_class.parse_options(argv) }.to output(/Configure which user and project to work on./).to_stderr
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when an option with incorrect type is given" do
|
30
|
+
let(:argv) { ["--max-issues", "X"] }
|
31
|
+
|
32
|
+
it "aborts the execution with error message from parser" do
|
33
|
+
expect(Kernel).to receive(:abort)
|
34
|
+
expect { described_class.parse_options(argv) }.to output(/invalid argument: --max-issues X/).to_stderr
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when path to configuration file is given" do
|
39
|
+
let(:argv) { ["--config-file", File.join(__dir__, "..", "files", "config_example")] }
|
40
|
+
|
41
|
+
it "uses the values from the configuration file" do
|
42
|
+
expect { described_class.parse_options(argv) }.to output(/spec_project/).to_stdout
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when configuration file and parameters are given" do
|
47
|
+
let(:argv) { ["--project", "stronger_project", "--config-file", File.join(__dir__, "..", "files", "config_example")] }
|
48
|
+
|
49
|
+
it "uses the values from the arguments" do
|
50
|
+
expect { described_class.parse_options(argv) }.to output(/stronger_project/).to_stdout
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
4
54
|
end
|
data/spec/unit/reader_spec.rb
CHANGED
@@ -38,6 +38,15 @@ describe GitHubChangelogGenerator::Reader do
|
|
38
38
|
it { is_expected.to include("url" => "https://github.com/github-changelog-generator/Github-Changelog-Generator/tree/1.3.10") }
|
39
39
|
it { is_expected.to include("date" => "2015-03-18") }
|
40
40
|
end
|
41
|
+
context "when given a named link" do
|
42
|
+
subject { @reader.parse_heading("## [1.3.10]") }
|
43
|
+
it { is_expected.to include("version" => "1.3.10") }
|
44
|
+
end
|
45
|
+
context "when given a named link with date" do
|
46
|
+
subject { @reader.parse_heading("## [1.3.10] (2015-03-18)") }
|
47
|
+
it { is_expected.to include("version" => "1.3.10") }
|
48
|
+
it { is_expected.to include("date" => "2015-03-18") }
|
49
|
+
end
|
41
50
|
context "when no url and date is provided" do
|
42
51
|
subject { @reader.parse_heading("## foobar") }
|
43
52
|
it { is_expected.to include("version" => "foobar", "url" => nil, "date" => nil) }
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_changelog_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.16.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Korolev
|
8
8
|
- Olle Jonsson
|
9
9
|
- Marco Ferrari
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-06-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -26,6 +26,34 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: async
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.25.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.25.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: async-http-faraday
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
29
57
|
- !ruby/object:Gem::Dependency
|
30
58
|
name: faraday-http-cache
|
31
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,23 +124,9 @@ dependencies:
|
|
96
124
|
- - ">="
|
97
125
|
- !ruby/object:Gem::Version
|
98
126
|
version: '10.0'
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: retriable
|
101
|
-
requirement: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - "~>"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '3.0'
|
106
|
-
type: :runtime
|
107
|
-
prerelease: false
|
108
|
-
version_requirements: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - "~>"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '3.0'
|
113
127
|
description: Changelog generation has never been so easy. Fully automate changelog
|
114
128
|
generation - this gem generate changelog file based on tags, issues and merged pull
|
115
|
-
requests from
|
129
|
+
requests from GitHub.
|
116
130
|
email: sky4winder+github_changelog_generator@gmail.com
|
117
131
|
executables:
|
118
132
|
- git-generate-changelog
|
@@ -126,6 +140,7 @@ files:
|
|
126
140
|
- bin/git-generate-changelog
|
127
141
|
- bin/github_changelog_generator
|
128
142
|
- lib/github_changelog_generator.rb
|
143
|
+
- lib/github_changelog_generator/argv_parser.rb
|
129
144
|
- lib/github_changelog_generator/generator/entry.rb
|
130
145
|
- lib/github_changelog_generator/generator/generator.rb
|
131
146
|
- lib/github_changelog_generator/generator/generator_fetcher.rb
|
@@ -147,12 +162,15 @@ files:
|
|
147
162
|
- man/git-generate-changelog.md
|
148
163
|
- spec/files/angular.js.md
|
149
164
|
- spec/files/bundler.md
|
165
|
+
- spec/files/config_example
|
150
166
|
- spec/files/github-changelog-generator.md
|
151
167
|
- spec/install_gem_in_bundler.gemfile
|
152
168
|
- spec/spec_helper.rb
|
153
169
|
- spec/unit/generator/entry_spec.rb
|
154
170
|
- spec/unit/generator/generator_processor_spec.rb
|
171
|
+
- spec/unit/generator/generator_spec.rb
|
155
172
|
- spec/unit/generator/generator_tags_spec.rb
|
173
|
+
- spec/unit/generator/section_spec.rb
|
156
174
|
- spec/unit/octo_fetcher_spec.rb
|
157
175
|
- spec/unit/options_spec.rb
|
158
176
|
- spec/unit/parse_file_spec.rb
|
@@ -184,7 +202,7 @@ homepage: https://github.com/github-changelog-generator/Github-Changelog-Generat
|
|
184
202
|
licenses:
|
185
203
|
- MIT
|
186
204
|
metadata: {}
|
187
|
-
post_install_message:
|
205
|
+
post_install_message:
|
188
206
|
rdoc_options: []
|
189
207
|
require_paths:
|
190
208
|
- lib
|
@@ -192,27 +210,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
210
|
requirements:
|
193
211
|
- - ">="
|
194
212
|
- !ruby/object:Gem::Version
|
195
|
-
version: 2.
|
213
|
+
version: 2.5.0
|
196
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
215
|
requirements:
|
198
216
|
- - ">="
|
199
217
|
- !ruby/object:Gem::Version
|
200
218
|
version: '0'
|
201
219
|
requirements: []
|
202
|
-
rubygems_version: 3.
|
203
|
-
signing_key:
|
220
|
+
rubygems_version: 3.2.7
|
221
|
+
signing_key:
|
204
222
|
specification_version: 4
|
205
|
-
summary: Script
|
223
|
+
summary: Script that automatically generates a changelog from your tags, issues, labels
|
206
224
|
and pull requests.
|
207
225
|
test_files:
|
208
226
|
- spec/files/angular.js.md
|
209
227
|
- spec/files/bundler.md
|
228
|
+
- spec/files/config_example
|
210
229
|
- spec/files/github-changelog-generator.md
|
211
230
|
- spec/install_gem_in_bundler.gemfile
|
212
231
|
- spec/spec_helper.rb
|
213
232
|
- spec/unit/generator/entry_spec.rb
|
214
233
|
- spec/unit/generator/generator_processor_spec.rb
|
234
|
+
- spec/unit/generator/generator_spec.rb
|
215
235
|
- spec/unit/generator/generator_tags_spec.rb
|
236
|
+
- spec/unit/generator/section_spec.rb
|
216
237
|
- spec/unit/octo_fetcher_spec.rb
|
217
238
|
- spec/unit/options_spec.rb
|
218
239
|
- spec/unit/parse_file_spec.rb
|