pr_changelog 0.2.0 → 0.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dab0c2b8a1d8fbd0d20075ac1bf8068b472f5abd
4
- data.tar.gz: 89eb296b69a3acbc79682445a411dac2c6b9dbd8
2
+ SHA256:
3
+ metadata.gz: f70cebf212d0628887eb6e2918877e9aa4afd8fa592161c48101cf772ad90ace
4
+ data.tar.gz: ef28138fbe7f31cdf8fbd787b11128ae4a106280ddd85ddb5aa9aefce2f8d560
5
5
  SHA512:
6
- metadata.gz: 11f056d478fa379d7c20e177519a9ffdf29b4d01a7aab3d9e374eff223310759217b8fafb18d4ecf247a01d5f6ed2947a329c8a51ab7430c65a7b7bca926f7b7
7
- data.tar.gz: 42057d5c68c710b313f22e9d7fe8a5edaf7953e9956ea4f4da81131160017bf167504cccd6d50af05c91858f817eaf0de52c4953b067c26df3726707e0a6549d
6
+ metadata.gz: ec11aeb735c949e902f0ccb64b7039254aa806268476412ec067504a8d064b2df03479ef805e5848df7857d0c394baa46ccd3dffa9c43a00fd56c0f7d441ce87
7
+ data.tar.gz: 0ab4bf6ab95960ff6f614c0c8b956cd8f86b2002b818593d9b338445cfdf81de524f521ef0e3ae1bdf2300aa98f2e78ce3ad12800044648ec472507141bdef1e
@@ -0,0 +1,3 @@
1
+ {
2
+ "format": "pretty"
3
+ }
data/Gemfile.lock CHANGED
@@ -1,28 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pr_changelog (0.2.0)
4
+ pr_changelog (0.4.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- coderay (1.1.2)
10
- method_source (0.9.2)
11
- minitest (5.11.3)
12
- pry (0.12.2)
13
- coderay (~> 1.1.0)
14
- method_source (~> 0.9.0)
15
- rake (12.3.2)
9
+ coderay (1.1.3)
10
+ method_source (1.0.0)
11
+ minitest (5.15.0)
12
+ pry (0.14.1)
13
+ coderay (~> 1.1)
14
+ method_source (~> 1.0)
15
+ rake (13.0.6)
16
16
 
17
17
  PLATFORMS
18
18
  ruby
19
19
 
20
20
  DEPENDENCIES
21
- bundler (~> 2.0.1)
22
- minitest (~> 5.11.3)
21
+ bundler (~> 2.3.9)
22
+ minitest (~> 5.15.0)
23
23
  pr_changelog!
24
- pry (~> 0.12.2)
25
- rake (~> 12.3.2)
24
+ pry (~> 0.14.1)
25
+ rake (~> 13.0.6)
26
26
 
27
27
  BUNDLED WITH
28
- 2.0.1
28
+ 2.3.9
data/README.md CHANGED
@@ -100,6 +100,40 @@ Will produce:
100
100
  - #60: 👨‍💻 Setup hockeyapp for crash reporting
101
101
  ```
102
102
 
103
+ It's also possible to not pass any git references if you have sorted git tags. For example, if currently in your project you have the following tags:
104
+
105
+ ```
106
+ $ git tag -l
107
+ 0.1.0
108
+ 0.1.1
109
+ 0.2.0
110
+ 0.2.1
111
+ 0.2.2
112
+ ```
113
+
114
+ Then you can get the changes from the last release to `'master'` with:
115
+
116
+ ```
117
+ $ pr_changelog
118
+
119
+ ## Changes since 0.2.2 to master
120
+
121
+ ...
122
+ ```
123
+
124
+ If you want to get the changes for the last release (between `0.2.1` and `0.2.2`) you can execute:
125
+
126
+ ```
127
+ $ pr_changelog --last-release
128
+
129
+ ## Changes since 0.2.1 to 0.2.2
130
+
131
+ ...
132
+ ```
133
+
134
+
135
+
136
+
103
137
  ## Configuration
104
138
 
105
139
  Change the emojis or add your own in a `.pr_changelog.json` file:
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrChangelog
4
+ # A "protocol"-like base class for the extracting the change commit strategies
5
+ class BaseCommitStrategy
6
+ def parsed_commits
7
+ raise 'Not implemented'
8
+ end
9
+
10
+ def format_commit(_commit_line)
11
+ raise 'Not implemented'
12
+ end
13
+ end
14
+ end
@@ -5,15 +5,17 @@ module PrChangelog
5
5
  class ChangeLine
6
6
  attr_reader :pr_number, :tag, :title
7
7
 
8
+ SKIP_CI_PATTERN = /\s*\[(skip ci)\]\s*/im
9
+
8
10
  def initialize(pr_number, tag, title)
9
11
  @pr_number = pr_number
10
12
  @tag = tag
11
- @title = title
13
+ @title = title.gsub(SKIP_CI_PATTERN, '')
12
14
  end
13
15
 
14
16
  def to_s
15
17
  if tag.nil?
16
- "- #{pr_number}: #{title.first_lowercase}"
18
+ "- #{pr_number}: #{formatted_title}"
17
19
  else
18
20
  "- #{pr_number}: #{tag}: #{title.first_lowercase}"
19
21
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrChangelog
4
+ class CLI
5
+ # A simple wrapper over ARGV that is passed to the CLI class
6
+ class Args
7
+ def initialize(raw_args)
8
+ @raw_args = raw_args
9
+ end
10
+
11
+ def include?(flag)
12
+ raw_args.include?(flag)
13
+ end
14
+
15
+ def value_for(flag)
16
+ return nil unless raw_args.index(flag)
17
+
18
+ next_index = raw_args.index(flag) + 1
19
+ value = raw_args.delete_at(next_index)
20
+ raw_args.delete(flag)
21
+ value
22
+ end
23
+
24
+ def include_flags?(flag, flag_variation)
25
+ include?(flag) || include?(flag_variation)
26
+ end
27
+
28
+ def last(number)
29
+ raw_args.last(number)
30
+ end
31
+
32
+ attr_reader :raw_args
33
+ end
34
+ end
35
+ end
@@ -9,13 +9,23 @@ module PrChangelog
9
9
  [Options]
10
10
 
11
11
  -h, --help\tShow this help
12
+ -l, --last-release\tSets from_reference and to_reference to the last release and the previous one
12
13
  --format FORMAT_NAME\t(default "plain"), options ("pretty", "plain")
14
+ --strategy STRATEGY_NAME\tIs the strategy used to merge pull requests (default "merge"), options ("merge", "squash").
13
15
 
14
16
  [Examples]
15
17
 
16
- Listing the changes for the last release (since the previous to the last one)
18
+ Listing the unreleased changes
17
19
 
18
20
  $ pr_changelog
21
+
22
+ Listing the changes from the last release
23
+
24
+ $ pr_changelog --last-release
25
+
26
+ Listing the changes between two given git references
27
+
28
+ $ pr_changelog reference_A reference_B
19
29
  HELP
20
30
 
21
31
  class InvalidInputs < StandardError
@@ -24,29 +34,50 @@ module PrChangelog
24
34
  class HelpWanted < StandardError
25
35
  end
26
36
 
27
- attr_reader :format, :from_reference, :to_reference
37
+ attr_reader :format, :strategy, :from_reference, :to_reference
28
38
 
29
- def initialize(args)
30
- throw HelpWanted if args.include?('--help') || args.include?('-h')
39
+ class CannotDetermineRelease < StandardError
40
+ end
31
41
 
32
- @format = PrChangelog.config.default_format
33
- if args.include?('--format')
34
- next_index = args.index('--format') + 1
35
- @format = args.delete_at(next_index)
36
- args.delete('--format')
37
- end
42
+ def initialize(raw_args, releases = nil)
43
+ args = Args.new(raw_args)
44
+ raise HelpWanted if args.include_flags?('-h', '--help')
45
+
46
+ @format = args.value_for('--format') || PrChangelog.config.default_format
47
+
48
+ @strategy = args.value_for('--strategy') || PrChangelog.config.default_strategy
49
+
50
+ @releases = releases || Releases.new
38
51
 
39
52
  @from_reference, @to_reference = args.last(2)
53
+ @from_reference ||= @releases.last_release
40
54
  @to_reference ||= 'master'
41
55
 
56
+ if args.include_flags?('-l', '--last-release')
57
+ last_release_pair = @releases.last_release_pair
58
+ raise CannotDetermineRelease if last_release_pair.length != 2
59
+
60
+ @from_reference, @to_reference = last_release_pair
61
+ end
62
+
42
63
  return if @from_reference && @to_reference
43
64
 
44
- throw InvalidInputs.new
65
+ raise InvalidInputs
66
+ end
67
+
68
+ def build_strategy
69
+ if strategy == 'merge'
70
+ MergeCommitStrategy.new(from_reference, to_reference)
71
+ elsif strategy == 'squash'
72
+ SquashCommitStrategy.new(from_reference, to_reference)
73
+ else
74
+ raise "Strategy '#{strategy}' not recognized."
75
+ end
45
76
  end
46
77
 
47
78
  def run
48
- changes = NotReleasedChanges.new(from_reference, to_reference)
49
- puts "## Changes since #{from_reference} to #{to_reference}\n\n"
79
+ changes = NotReleasedChanges.new(build_strategy)
80
+ puts "## Changes since #{from_reference} to #{to_reference} (#{strategy})\n\n"
50
81
 
51
82
  if format == 'pretty'
52
83
  puts changes.grouped_formatted_changelog
@@ -7,6 +7,7 @@ module PrChangelog
7
7
  class Config
8
8
  DEFAULTS = {
9
9
  format: 'plain',
10
+ strategy: 'merge',
10
11
  tags: [
11
12
  {
12
13
  prefix: 'feature',
@@ -49,6 +50,10 @@ module PrChangelog
49
50
  loaded_data[:format] || DEFAULTS[:format]
50
51
  end
51
52
 
53
+ def default_strategy
54
+ loaded_data[:strategy] || DEFAULTS[:strategy]
55
+ end
56
+
52
57
  def tags
53
58
  loaded_data[:tags] || DEFAULTS[:tags]
54
59
  end
@@ -5,8 +5,16 @@ module PrChangelog
5
5
  class GitProxy
6
6
  LOG_FORMAT = '- %cn: %s%n%w(80, 2, 2)%b'
7
7
 
8
+ def commits_between(base_ref, current_ref)
9
+ `git log #{base_ref}..#{current_ref} --format='#{LOG_FORMAT}'`
10
+ end
11
+
8
12
  def merge_commits_between(base_ref, current_ref)
9
13
  `git log --merges #{base_ref}..#{current_ref} --format='#{LOG_FORMAT}'`
10
14
  end
15
+
16
+ def git_tags_list
17
+ `git tag --list`.split("\n")
18
+ end
11
19
  end
12
20
  end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrChangelog
4
+ # A strategy that given two references will return the filtered commit changes
5
+ # based on the merge commits
6
+ class MergeCommitStrategy < BaseCommitStrategy
7
+ MERGE_COMMIT_FORMAT = /Merge pull request (?<pr_number>#\d+) .*/.freeze
8
+ TAGGED_TITLE = /^(?<tag>.+):\s*(?<title>.+)$/.freeze
9
+
10
+ attr_reader :base_ref, :current_ref, :git_proxy
11
+
12
+ def initialize(base_ref, current_ref, git_proxy = GitProxy.new)
13
+ @base_ref = base_ref
14
+ @current_ref = current_ref
15
+ @git_proxy = git_proxy
16
+ end
17
+
18
+ def parsed_commits
19
+ merge_commits_not_merged_into_base_ref
20
+ .split("\n- ")
21
+ .reject(&:empty?)
22
+ .map { |e| e.split("\n") }
23
+ .select { |pair| pair.count == 2 }
24
+ end
25
+
26
+ def format_commit(commit_info)
27
+ github_commit_title = commit_info.first
28
+ commit_title = commit_info.last
29
+
30
+ pr_number = pull_request_number_for(github_commit_title)
31
+ commit_title.strip!
32
+ match = commit_title.match(TAGGED_TITLE)
33
+ if match
34
+ ChangeLine.new(pr_number, match[:tag], match[:title])
35
+ else
36
+ ChangeLine.new(pr_number, nil, commit_title)
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def merge_commits_not_merged_into_base_ref
43
+ git_proxy.merge_commits_between(base_ref, current_ref)
44
+ end
45
+
46
+ def pull_request_number_for(github_commit_title)
47
+ md = github_commit_title.match(MERGE_COMMIT_FORMAT)
48
+ md[:pr_number] if md
49
+ end
50
+ end
51
+ end
@@ -4,15 +4,10 @@ module PrChangelog
4
4
  # Calculates a list of not released changes from `base_ref` to `current_ref`
5
5
  # those changes consist of the merged pull-request title
6
6
  class NotReleasedChanges
7
- MERGE_COMMIT_FORMAT = /Merge pull request (?<pr_number>#\d+) .*/.freeze
8
- TAGGED_TITLE = /^(?<tag>.+):\s*(?<title>.+)$/.freeze
7
+ attr_reader :commits_strategy
9
8
 
10
- attr_reader :base_ref, :current_ref, :git_proxy
11
-
12
- def initialize(base_ref, current_ref, git_proxy = GitProxy.new)
13
- @base_ref = base_ref
14
- @current_ref = current_ref
15
- @git_proxy = git_proxy
9
+ def initialize(commits_strategy)
10
+ @commits_strategy = commits_strategy
16
11
  end
17
12
 
18
13
  def emoji_tags
@@ -48,37 +43,9 @@ module PrChangelog
48
43
  end
49
44
 
50
45
  def parsed_change_list
51
- @parsed_change_list ||= parsed_merge_commits.map do |pair|
52
- format_merge_commit(pair.first, pair.last)
46
+ @parsed_change_list ||= commits_strategy.parsed_commits.map do |commit_info|
47
+ commits_strategy.format_commit(commit_info)
53
48
  end
54
49
  end
55
-
56
- def parsed_merge_commits
57
- merge_commits_not_merged_into_base_ref
58
- .split('- ')
59
- .reject(&:empty?)
60
- .map { |e| e.split("\n") }
61
- .select { |pair| pair.count == 2 }
62
- end
63
-
64
- def format_merge_commit(github_commit_title, commit_title)
65
- pr_number = pull_request_number_for(github_commit_title)
66
- commit_title.strip!
67
- match = commit_title.match(TAGGED_TITLE)
68
- if match
69
- ChangeLine.new(pr_number, match[:tag], match[:title])
70
- else
71
- ChangeLine.new(pr_number, nil, commit_title)
72
- end
73
- end
74
-
75
- def merge_commits_not_merged_into_base_ref
76
- git_proxy.merge_commits_between(base_ref, current_ref)
77
- end
78
-
79
- def pull_request_number_for(github_commit_title)
80
- md = github_commit_title.match(MERGE_COMMIT_FORMAT)
81
- md[:pr_number] if md
82
- end
83
50
  end
84
51
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PrChangelog
4
+ class Releases
5
+ attr_reader :git_proxy
6
+
7
+ def initialize(git_proxy = GitProxy.new)
8
+ @git_proxy = git_proxy
9
+ end
10
+
11
+ def last_release
12
+ sorted_tags.last
13
+ end
14
+
15
+ def last_release_pair
16
+ sorted_tags.last(2)
17
+ end
18
+
19
+ private
20
+
21
+ def sorted_tags
22
+ git_proxy.git_tags_list.sort_by { |tag| tag_value(tag) }
23
+ end
24
+
25
+ def tag_value(tag)
26
+ components = tag.split('.')
27
+ components[0].to_i * 100_000 + components[1].to_i * 1_000 + components[2].to_i
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,56 @@
1
+
2
+ # frozen_string_literal: true
3
+
4
+ module PrChangelog
5
+ # A strategy to get the changes between the two references based on the
6
+ # squash commits
7
+ class SquashCommitStrategy < BaseCommitStrategy
8
+ SQUASH_COMMIT_FORMAT = /^GitHub( Enterprise)?: (?<title>.+) \((?<pr_number>#\d+)\)$/.freeze
9
+ TAGGED_TITLE = /^(?<tag>[^:]+):\s*(?<title>.+)$/.freeze
10
+
11
+ attr_reader :base_ref, :current_ref, :git_proxy
12
+
13
+ def initialize(base_ref, current_ref, git_proxy = GitProxy.new)
14
+ @base_ref = base_ref
15
+ @current_ref = current_ref
16
+ @git_proxy = git_proxy
17
+ end
18
+
19
+ def parsed_commits
20
+ commits_not_merged_into_base_ref
21
+ .split('- ')
22
+ .reject(&:empty?)
23
+ .map { |e| e.split("\n") }
24
+ .map(&:first)
25
+ .select { |line| line.match(SQUASH_COMMIT_FORMAT) }
26
+ end
27
+
28
+ def format_commit(commit_line)
29
+ pr_number = pull_request_number_for(commit_line)
30
+ commit_title = pull_request_title_for(commit_line)
31
+ commit_title.strip!
32
+ match = commit_title.match(TAGGED_TITLE)
33
+ if match
34
+ ChangeLine.new(pr_number, match[:tag], match[:title])
35
+ else
36
+ ChangeLine.new(pr_number, nil, commit_title)
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def commits_not_merged_into_base_ref
43
+ git_proxy.commits_between(base_ref, current_ref)
44
+ end
45
+
46
+ def pull_request_number_for(github_commit_title)
47
+ md = github_commit_title.match(SQUASH_COMMIT_FORMAT)
48
+ md[:pr_number] if md
49
+ end
50
+
51
+ def pull_request_title_for(github_commit_title)
52
+ md = github_commit_title.match(SQUASH_COMMIT_FORMAT)
53
+ md[:title] if md
54
+ end
55
+ end
56
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PrChangelog
4
- VERSION = '0.2.0'
4
+ VERSION = '0.4.1'
5
5
  end
data/lib/pr_changelog.rb CHANGED
@@ -3,11 +3,16 @@
3
3
  require 'pr_changelog/version'
4
4
  require 'pr_changelog/config'
5
5
  require 'pr_changelog/extensions/string'
6
+ require 'pr_changelog/releases'
7
+ require 'pr_changelog/cli/args'
6
8
  require 'pr_changelog/cli'
7
9
  require 'pr_changelog/git_proxy'
8
10
  require 'pr_changelog/tag'
9
11
  require 'pr_changelog/change_line'
10
12
  require 'pr_changelog/grouped_changes'
13
+ require 'pr_changelog/base_commit_strategy'
14
+ require 'pr_changelog/merge_commit_strategy'
15
+ require 'pr_changelog/squash_commit_strategy'
11
16
  require 'pr_changelog/not_released_changes'
12
17
 
13
18
  # Main module
data/pr_changelog.gemspec CHANGED
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
- spec.add_development_dependency 'bundler', '~> 2.0.1'
30
- spec.add_development_dependency 'minitest', '~> 5.11.3'
31
- spec.add_development_dependency 'pry', '~> 0.12.2'
32
- spec.add_development_dependency 'rake', '~> 12.3.2'
29
+ spec.add_development_dependency 'bundler', '~> 2.3.9'
30
+ spec.add_development_dependency 'minitest', '~> 5.15.0'
31
+ spec.add_development_dependency 'pry', '~> 0.14.1'
32
+ spec.add_development_dependency 'rake', '~> 13.0.6'
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pr_changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felipe Espinoza
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-22 00:00:00.000000000 Z
11
+ date: 2022-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,57 +16,57 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.1
19
+ version: 2.3.9
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.1
26
+ version: 2.3.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 5.11.3
33
+ version: 5.15.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 5.11.3
40
+ version: 5.15.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.12.2
47
+ version: 0.14.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.12.2
54
+ version: 0.14.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 12.3.2
61
+ version: 13.0.6
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 12.3.2
69
- description:
68
+ version: 13.0.6
69
+ description:
70
70
  email:
71
71
  - felipe.espinoza@schibsted.com
72
72
  executables:
@@ -75,6 +75,7 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - ".gitignore"
78
+ - ".pr_changelog.json"
78
79
  - ".travis.yml"
79
80
  - CODE_OF_CONDUCT.md
80
81
  - Gemfile
@@ -86,13 +87,18 @@ files:
86
87
  - bin/setup
87
88
  - exe/pr_changelog
88
89
  - lib/pr_changelog.rb
90
+ - lib/pr_changelog/base_commit_strategy.rb
89
91
  - lib/pr_changelog/change_line.rb
90
92
  - lib/pr_changelog/cli.rb
93
+ - lib/pr_changelog/cli/args.rb
91
94
  - lib/pr_changelog/config.rb
92
95
  - lib/pr_changelog/extensions/string.rb
93
96
  - lib/pr_changelog/git_proxy.rb
94
97
  - lib/pr_changelog/grouped_changes.rb
98
+ - lib/pr_changelog/merge_commit_strategy.rb
95
99
  - lib/pr_changelog/not_released_changes.rb
100
+ - lib/pr_changelog/releases.rb
101
+ - lib/pr_changelog/squash_commit_strategy.rb
96
102
  - lib/pr_changelog/tag.rb
97
103
  - lib/pr_changelog/version.rb
98
104
  - pr_changelog.gemspec
@@ -100,7 +106,7 @@ homepage: https://github.com/schibsted/pr_changelog
100
106
  licenses:
101
107
  - MIT
102
108
  metadata: {}
103
- post_install_message:
109
+ post_install_message:
104
110
  rdoc_options: []
105
111
  require_paths:
106
112
  - lib
@@ -115,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
121
  - !ruby/object:Gem::Version
116
122
  version: '0'
117
123
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.5.2.3
120
- signing_key:
124
+ rubygems_version: 3.3.6
125
+ signing_key:
121
126
  specification_version: 4
122
127
  summary: A script to generate nice changelogs from your merged PRs
123
128
  test_files: []