gitlab_awesome_release 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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