gitlab_awesome_release 1.0.4 → 1.1.0

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
2
  SHA256:
3
- metadata.gz: 8f8216d0fc231295e49843e172a98823956739932b4e1c9234a47c10c41d6d73
4
- data.tar.gz: 44d3f967e2acb74643e7dabdcaaf94308b7446f954954050281b8c51cdf0a3bd
3
+ metadata.gz: e6119d125dfe22d2498b05ac8239fedd1faea8308a6f7608d1c5e2d658aaacbb
4
+ data.tar.gz: 67f2eb14cf37f406cf8639a62982cb21fc5fc030b35303c5ce592874a4ddbb72
5
5
  SHA512:
6
- metadata.gz: d71835b0b185a3b3003c0c2f185a3067c7bdf07f3a3c390046430c4fd1c5387154254e1b27bbaf6def8de879c9db1348cf7ade8d302b316e43be428893498cbc
7
- data.tar.gz: 9f7c6371fcd757fa9ccfc4353a81c69abd3cced58acc681a0f78f1dbe4e7d88f61ff7e6dde2666446f12f4cf38fa92afb00363d6b45bd8ccab5b1863b9ee6bda
6
+ metadata.gz: cb463789ea8b4495ea08e9906b78c2b3c179c40a59ec958049d8d475cd8039e02a2a601be64adbebbd7ded9143ecf3b4eea5208c43ac5107f76b404fe9bf4c9d
7
+ data.tar.gz: bee53477925536e2fa9994a15dd5009c0dd90397b96f4b3abb50159692b5d87d6abe88e46a9706e2838b2042ee4b4baaf4a39f68fbddb0a491a5ede2eb92443d
data/.gitlab-ci.yml CHANGED
@@ -23,11 +23,16 @@ test:
23
23
 
24
24
  script:
25
25
  - bundle exec rspec
26
- - bundle exec rubocop -P
26
+
27
+ coverage: '/LOC \(([\d.]+)%\) covered/'
28
+
29
+ artifacts:
30
+ reports:
31
+ coverage_report:
32
+ coverage_format: cobertura
33
+ path: coverage/coverage.xml
27
34
 
28
35
  rules:
29
- - if: '$IMAGE == "rubylang/ruby:master-nightly-bionic"'
30
- allow_failure: true
31
36
  - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
32
37
  - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
33
38
 
@@ -42,7 +47,9 @@ test:
42
47
  - ruby:2.6
43
48
  - ruby:2.7
44
49
  - ruby:3.0
45
- - rubylang/ruby:master-nightly-bionic
50
+ - ruby:3.1
51
+ - ruby:3.2
52
+ - ruby:3.3
46
53
 
47
54
  pages:
48
55
  extends: .default
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## Unreleased
2
- [full changelog](https://gitlab.com/sue445/gitlab_awesome_release/compare/v1.0.4...master)
2
+ [full changelog](https://gitlab.com/sue445/gitlab_awesome_release/compare/v1.1.0...master)
3
+
4
+ ## v1.1.0
5
+ [full changelog](https://gitlab.com/sue445/gitlab_awesome_release/compare/v1.0.4...v1.1.0)
6
+
7
+ * Allow specifying M-R commit format for changelog generation
8
+ * https://gitlab.com/sue445/gitlab_awesome_release/-/merge_requests/57
3
9
 
4
10
  ## v1.0.4
5
11
  [full changelog](https://gitlab.com/sue445/gitlab_awesome_release/compare/v1.0.3...v1.0.4)
data/Gemfile CHANGED
@@ -3,7 +3,13 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in gitlab_awesome_release.gemspec
4
4
  gemspec
5
5
 
6
- # rubocop:disable Bundler/DuplicatedGem
6
+ if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.2.0")
7
+ group :development do
8
+ # NOTE: addressable 2.8.1+ requires ruby 2.2.0+
9
+ gem "addressable", "< 2.8.1"
10
+ end
11
+ end
12
+
7
13
  if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.3.0")
8
14
  group :development do
9
15
  # NOTE: gitlab 4.6.0+ requires ruby 2.3.0+
@@ -14,6 +20,12 @@ if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.3.0")
14
20
 
15
21
  # NOTE: httparty 0.20.0+ requires ruby 2.3.0+
16
22
  gem "httparty", "< 0.20.0"
23
+
24
+ # NOTE: webrick 1.4.0+ requires ruby 2.3.0+
25
+ gem "webrick", "< 1.4.0"
26
+
27
+ # NOTE: webmock 3.17.0+ requires ruby 2.3.0+
28
+ gem "webmock", "< 3.17.0"
17
29
  end
18
30
  elsif Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.4.0")
19
31
  group :development do
@@ -34,12 +46,14 @@ elsif Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.4.0")
34
46
  gem "parallel", "< 1.20.1"
35
47
  end
36
48
  end
37
- # rubocop:enable Bundler/DuplicatedGem
38
49
 
39
50
  if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.5.0")
40
51
  group :development do
41
52
  # NOTE: docile 1.4.0+ requires ruby 2.5.0+
42
53
  gem "docile", "< 1.4.0"
54
+
55
+ # NOTE: simplecov-cobertura 2.0.0+ requires ruby 2.5.0+
56
+ gem "simplecov-cobertura", "< 2.0.0"
43
57
  end
44
58
  end
45
59
 
@@ -47,6 +61,9 @@ if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.4.0")
47
61
  group :development do
48
62
  # NOTE: simplecov-html 0.11.0+ requires ruby 2.4.0+
49
63
  gem "simplecov-html", "< 0.11.0"
64
+
65
+ # NOTE: unicode-display_width 2.4.0+ requires ruby 2.4.0+
66
+ gem "unicode-display_width", "< 2.4.0"
50
67
  end
51
68
  end
52
69
 
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # GitlabAwesomeRelease
2
- Generate changelog from tags and MergeRequests on [GitLab](https://about.gitlab.com/)
2
+ Generate changelog from tags and MergeRequests on [GitLab](https://about.gitlab.com/)
3
+
4
+ _GITLAB is a trademark of GitLab Inc. in the United States and other countries and regions_
3
5
 
4
6
  [![Gem Version](https://badge.fury.io/rb/gitlab_awesome_release.svg)](https://badge.fury.io/rb/gitlab_awesome_release)
5
7
  [![pipeline status](https://gitlab.com/sue445/gitlab_awesome_release/badges/master/pipeline.svg)](https://gitlab.com/sue445/gitlab_awesome_release/commits/master)
@@ -60,8 +62,11 @@ All options can be specified in both the command arguments and environment varia
60
62
  * Filepath to changelog file (e.g. `CHANGELOG.md`)
61
63
  * if empty, output to console
62
64
  * `--allow-tag-format` , `ALLOW_TAG_FORMAT`
63
- * Tag format for release note heading (regular expresion pattern)
65
+ * Tag format for release note heading (regular expression pattern)
64
66
  * default: `^v?[\d.]+`
67
+ * `--merge-request-commit-format` , `MERGE_REQUEST_COMMIT_FORMAT`
68
+ * Commit format for matching merge request (regular expression pattern)
69
+ * default: `^Merge branch .*See merge request .*\!(\d+)$`
65
70
  * `--log-level` , `LOG_LEVEL`
66
71
  * Log level `(debug|info|warn|error|fatal|unknown)`
67
72
  * default: `info`
@@ -86,8 +91,11 @@ All options can be specified in both the command arguments and environment varia
86
91
  * Filepath to changelog file (e.g. `CHANGELOG.md`)
87
92
  * if empty, output to console
88
93
  * `--allow-tag-format` , `ALLOW_TAG_FORMAT`
89
- * Tag format for release note heading (regular expresion pattern)
94
+ * Tag format for release note heading (regular expression pattern)
90
95
  * default: `^v?[\d.]+`
96
+ * `--merge-request-commit-format` , `MERGE_REQUEST_COMMIT_FORMAT`
97
+ * Commit format for matching merge request (regular expression pattern)
98
+ * default: `^Merge branch .*See merge request .*\!(\d+)$`
91
99
  * `--log-level` , `LOG_LEVEL`
92
100
  * Log level `(debug|info|warn|error|fatal|unknown)`
93
101
  * default: `info`
@@ -30,12 +30,11 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "thor"
31
31
 
32
32
  spec.add_development_dependency "bundler", ">= 1.10"
33
- spec.add_development_dependency "onkcop", "0.53.0.2"
34
- spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "rake", ">= 10.0"
35
34
  spec.add_development_dependency "rspec"
36
35
  spec.add_development_dependency "rspec-temp_dir"
37
- spec.add_development_dependency "rubocop", "0.57.2" # rubocop v0.58.0+ requires ruby 2.2+
38
36
  spec.add_development_dependency "simplecov"
37
+ spec.add_development_dependency "simplecov-cobertura"
39
38
  spec.add_development_dependency "webmock"
40
39
  spec.add_development_dependency "yard"
41
40
  end
@@ -7,6 +7,7 @@ module GitlabAwesomeRelease
7
7
 
8
8
  class CLI < Thor
9
9
  DEFAULT_VERSION_FORMAT = "^v?[\\d.]+".freeze
10
+ DEFAULT_MERGE_REQUEST_COMMIT_FORMAT = "^Merge branch .*See merge request .*\!(\d+)$".freeze
10
11
  GITLAB_ENV_FILES = %w[.env.gitlab ~/.env.gitlab].freeze
11
12
 
12
13
  GITLAB_API_DESCRIPTION = "GitLab API endpoint (e.g. http://example.com/api/v4)".freeze
@@ -20,14 +21,15 @@ module GitlabAwesomeRelease
20
21
  end
21
22
 
22
23
  desc "create_note", "generate changelog"
23
- option :gitlab_api_endpoint, desc: GITLAB_API_DESCRIPTION
24
- option :gitlab_api_private_token, desc: GITLAB_API_PRIVATE_TOKEN_DESCRIPTION
25
- option :gitlab_project_name, desc: GITLAB_API_PROJECT_NAME
26
- option :from_tag, desc: "The first tag to create a changelog (default: oldest tag)"
27
- option :to_tag, desc: "The last tag to create a changelog (default: latest tag)"
28
- option :filename, desc: "Filepath to changelog file (e.g. CHANGELOG.md). if empty, output to console"
29
- option :allow_tag_format, desc: "Tag format for release note heading (regular expresion pattern)", default: DEFAULT_VERSION_FORMAT
30
- option :log_level, desc: LOG_LEVEL_DESCRIPTION, default: "info"
24
+ option :gitlab_api_endpoint, desc: GITLAB_API_DESCRIPTION
25
+ option :gitlab_api_private_token, desc: GITLAB_API_PRIVATE_TOKEN_DESCRIPTION
26
+ option :gitlab_project_name, desc: GITLAB_API_PROJECT_NAME
27
+ option :from_tag, desc: "The first tag to create a changelog (default: oldest tag)"
28
+ option :to_tag, desc: "The last tag to create a changelog (default: latest tag)"
29
+ option :filename, desc: "Filepath to changelog file (e.g. CHANGELOG.md). if empty, output to console"
30
+ option :allow_tag_format, desc: "Tag format for release note heading (regular expression pattern)", default: DEFAULT_VERSION_FORMAT
31
+ option :merge_request_commit_format, desc: "Commit format for matching merge request (regular expression pattern)", default: DEFAULT_MERGE_REQUEST_COMMIT_FORMAT
32
+ option :log_level, desc: LOG_LEVEL_DESCRIPTION, default: "info"
31
33
  def create_note
32
34
  Dotenv.load(*GITLAB_ENV_FILES)
33
35
 
@@ -44,12 +46,13 @@ module GitlabAwesomeRelease
44
46
  end
45
47
 
46
48
  desc "create_latest_note", "generate release note only latest version and unreleased"
47
- option :gitlab_api_endpoint, desc: GITLAB_API_DESCRIPTION
48
- option :gitlab_api_private_token, desc: GITLAB_API_PRIVATE_TOKEN_DESCRIPTION
49
- option :gitlab_project_name, desc: GITLAB_API_PROJECT_NAME
50
- option :filename, desc: "Filepath to changelog file (e.g. CHANGELOG.md). if empty, output to console"
51
- option :allow_tag_format, desc: "Tag format for release note heading (regular expresion pattern)", default: DEFAULT_VERSION_FORMAT
52
- option :log_level, desc: LOG_LEVEL_DESCRIPTION, default: "info"
49
+ option :gitlab_api_endpoint, desc: GITLAB_API_DESCRIPTION
50
+ option :gitlab_api_private_token, desc: GITLAB_API_PRIVATE_TOKEN_DESCRIPTION
51
+ option :gitlab_project_name, desc: GITLAB_API_PROJECT_NAME
52
+ option :filename, desc: "Filepath to changelog file (e.g. CHANGELOG.md). if empty, output to console"
53
+ option :allow_tag_format, desc: "Tag format for release note heading (regular expression pattern)", default: DEFAULT_VERSION_FORMAT
54
+ option :merge_request_commit_format, desc: "Commit format for matching merge request (regular expression pattern)", default: DEFAULT_MERGE_REQUEST_COMMIT_FORMAT
55
+ option :log_level, desc: LOG_LEVEL_DESCRIPTION, default: "info"
53
56
  def create_latest_note
54
57
  Dotenv.load(*GITLAB_ENV_FILES)
55
58
 
@@ -111,10 +114,11 @@ module GitlabAwesomeRelease
111
114
  end
112
115
 
113
116
  def create_project
114
- gitlab_api_endpoint = option_or_env!(:gitlab_api_endpoint)
115
- gitlab_api_private_token = option_or_env!(:gitlab_api_private_token)
116
- gitlab_project_name = option_or_env!(:gitlab_project_name)
117
- allow_tag_format = option_or_env(:allow_tag_format, DEFAULT_VERSION_FORMAT)
117
+ gitlab_api_endpoint = option_or_env!(:gitlab_api_endpoint)
118
+ gitlab_api_private_token = option_or_env!(:gitlab_api_private_token)
119
+ gitlab_project_name = option_or_env!(:gitlab_project_name)
120
+ allow_tag_format = option_or_env(:allow_tag_format, DEFAULT_VERSION_FORMAT)
121
+ merge_request_commit_format = option_or_env(:merge_request_commit_format, DEFAULT_MERGE_REQUEST_COMMIT_FORMAT)
118
122
 
119
123
  @logger = Logger.new(STDOUT)
120
124
  @logger.level = logger_level(option_or_env(:log_level))
@@ -128,6 +132,7 @@ module GitlabAwesomeRelease
128
132
  private_token: gitlab_api_private_token,
129
133
  project_name: gitlab_project_name,
130
134
  allow_tag_format: /#{allow_tag_format}/,
135
+ merge_request_commit_format: /#{merge_request_commit_format}/m,
131
136
  logger: @logger,
132
137
  )
133
138
  end
@@ -11,13 +11,15 @@ module GitlabAwesomeRelease
11
11
  # @param private_token [String]
12
12
  # @param project_name [String]
13
13
  # @param allow_tag_format [Regexp]
14
- def initialize(api_endpoint:, private_token:, project_name:, allow_tag_format:, logger:)
14
+ # @param merge_request_commit_format [Regexp]
15
+ def initialize(api_endpoint:, private_token:, project_name:, allow_tag_format:, merge_request_commit_format:, logger:)
15
16
  Gitlab.configure do |config|
16
17
  config.endpoint = api_endpoint
17
18
  config.private_token = private_token
18
19
  end
19
20
  @project_name = project_name
20
21
  @allow_tag_format = allow_tag_format
22
+ @merge_request_commit_format = merge_request_commit_format
21
23
  @logger = logger
22
24
  end
23
25
 
@@ -36,10 +38,9 @@ module GitlabAwesomeRelease
36
38
  Gitlab.repo_tags(@project_name, params)
37
39
  end
38
40
 
39
- # rubocop:disable Style/SymbolProc avoid SEGV on ruby 2.6.0
41
+ # avoid SEGV on ruby 2.6.0
40
42
  # https://bugs.ruby-lang.org/issues/15489
41
43
  @all_tag_names = repo_tags.sort_by {|tag| tag.commit.authored_date }.map {|tag| tag.name }
42
- # rubocop:enable Style/SymbolProc
43
44
  end
44
45
 
45
46
  # @return [Array<String>]
@@ -104,7 +105,7 @@ module GitlabAwesomeRelease
104
105
 
105
106
  merge_request_iids =
106
107
  commits.map do |commit|
107
- commit["message"] =~ /^Merge branch .*See merge request .*\!(\d+)$/m
108
+ commit["message"] =~ @merge_request_commit_format
108
109
  Regexp.last_match(1)
109
110
  end
110
111
 
@@ -139,7 +140,7 @@ module GitlabAwesomeRelease
139
140
  mr_iids.each_with_object("") do |iid, str|
140
141
  begin
141
142
  str << merge_request_summary(iid) + "\n"
142
- rescue Gitlab::Error::NotFound # rubocop:disable Lint/HandleExceptions
143
+ rescue Gitlab::Error::NotFound
143
144
  # NOTE: suppress error (e.g. other repo's iid)
144
145
  end
145
146
  end
@@ -1,3 +1,3 @@
1
1
  module GitlabAwesomeRelease
2
- VERSION = "1.0.4".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_awesome_release
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-20 00:00:00.000000000 Z
11
+ date: 2024-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -66,32 +66,18 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.10'
69
- - !ruby/object:Gem::Dependency
70
- name: onkcop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 0.53.0.2
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 0.53.0.2
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - "~>"
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '10.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - "~>"
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '10.0'
97
83
  - !ruby/object:Gem::Dependency
@@ -123,21 +109,21 @@ dependencies:
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
- name: rubocop
112
+ name: simplecov
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - '='
115
+ - - ">="
130
116
  - !ruby/object:Gem::Version
131
- version: 0.57.2
117
+ version: '0'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
- - - '='
122
+ - - ">="
137
123
  - !ruby/object:Gem::Version
138
- version: 0.57.2
124
+ version: '0'
139
125
  - !ruby/object:Gem::Dependency
140
- name: simplecov
126
+ name: simplecov-cobertura
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - ">="
@@ -190,7 +176,6 @@ files:
190
176
  - ".gitignore"
191
177
  - ".gitlab-ci.yml"
192
178
  - ".rspec"
193
- - ".rubocop.yml"
194
179
  - ".yardopts"
195
180
  - CHANGELOG.md
196
181
  - Gemfile
@@ -232,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
217
  - !ruby/object:Gem::Version
233
218
  version: '0'
234
219
  requirements: []
235
- rubygems_version: 3.2.22
220
+ rubygems_version: 3.5.11
236
221
  signing_key:
237
222
  specification_version: 4
238
223
  summary: Generate changelog from tags and MergeRequests on GitLab
data/.rubocop.yml DELETED
@@ -1,20 +0,0 @@
1
- inherit_gem:
2
- onkcop: "config/rubocop.yml"
3
-
4
- AllCops:
5
- TargetRubyVersion: 2.4
6
-
7
- Gemspec/RequiredRubyVersion:
8
- Enabled: false
9
-
10
- Layout/AlignHash:
11
- EnforcedColonStyle: table
12
-
13
- Layout/ClosingHeredocIndentation:
14
- Enabled: false
15
-
16
- Layout/IndentHeredoc:
17
- Enabled: false
18
-
19
- Metrics/ClassLength:
20
- Max: 130