create_github_release 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +18 -0
  4. data/README.md +156 -38
  5. data/Rakefile +6 -6
  6. data/create_github_release.gemspec +3 -3
  7. data/exe/create-github-release +1 -1
  8. data/exe/revert-github-release +165 -0
  9. data/lib/create_github_release/assertions/bundle_is_up_to_date.rb +1 -1
  10. data/lib/create_github_release/assertions/gh_authenticated.rb +1 -1
  11. data/lib/create_github_release/assertions/gh_command_exists.rb +1 -1
  12. data/lib/create_github_release/assertions/git_command_exists.rb +1 -1
  13. data/lib/create_github_release/assertions/in_git_repo.rb +1 -1
  14. data/lib/create_github_release/assertions/in_repo_root_directory.rb +1 -1
  15. data/lib/create_github_release/assertions/local_and_remote_on_same_commit.rb +1 -1
  16. data/lib/create_github_release/assertions/local_release_branch_does_not_exist.rb +1 -1
  17. data/lib/create_github_release/assertions/no_staged_changes.rb +1 -1
  18. data/lib/create_github_release/assertions/no_uncommitted_changes.rb +1 -1
  19. data/lib/create_github_release/assertions/on_default_branch.rb +1 -1
  20. data/lib/create_github_release/assertions/remote_release_branch_does_not_exist.rb +1 -1
  21. data/lib/create_github_release/assertions/remote_release_tag_does_not_exist.rb +1 -1
  22. data/lib/create_github_release/command_line/options.rb +151 -0
  23. data/lib/create_github_release/command_line/parser.rb +262 -0
  24. data/lib/create_github_release/command_line/validations.rb +293 -0
  25. data/lib/create_github_release/command_line/validator.rb +93 -0
  26. data/lib/create_github_release/command_line.rb +43 -0
  27. data/lib/create_github_release/project.rb +115 -55
  28. data/lib/create_github_release/release_assertions.rb +1 -1
  29. data/lib/create_github_release/release_tasks.rb +1 -1
  30. data/lib/create_github_release/tasks/commit_release.rb +1 -1
  31. data/lib/create_github_release/tasks/create_github_release.rb +1 -1
  32. data/lib/create_github_release/tasks/create_release_branch.rb +1 -1
  33. data/lib/create_github_release/tasks/create_release_pull_request.rb +1 -1
  34. data/lib/create_github_release/tasks/create_release_tag.rb +1 -1
  35. data/lib/create_github_release/tasks/push_release.rb +1 -1
  36. data/lib/create_github_release/tasks/update_changelog.rb +1 -1
  37. data/lib/create_github_release/tasks/update_version.rb +5 -2
  38. data/lib/create_github_release/version.rb +1 -1
  39. data/lib/create_github_release.rb +1 -2
  40. metadata +12 -34
  41. data/lib/create_github_release/command_line_options.rb +0 -378
  42. data/lib/create_github_release/command_line_parser.rb +0 -229
@@ -15,7 +15,7 @@ module CreateGithubRelease
15
15
  # @example
16
16
  # require 'create_github_release'
17
17
  #
18
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
18
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
19
19
  # project = CreateGithubRelease::Project.new(options)
20
20
  # task = CreateGithubRelease::Tasks::CreateReleaseBranch.new(project)
21
21
  # begin
@@ -15,7 +15,7 @@ module CreateGithubRelease
15
15
  # @example
16
16
  # require 'create_github_release'
17
17
  #
18
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
18
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
19
19
  # project = CreateGithubRelease::Project.new(options)
20
20
  # task = CreateGithubRelease::Tasks::CreateReleasePullRequest.new(project)
21
21
  # begin
@@ -15,7 +15,7 @@ module CreateGithubRelease
15
15
  # @example
16
16
  # require 'create_github_release'
17
17
  #
18
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
18
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
19
19
  # project = CreateGithubRelease::Project.new(options)
20
20
  # task = CreateGithubRelease::Tasks::CreateReleaseTag.new(project)
21
21
  # begin
@@ -15,7 +15,7 @@ module CreateGithubRelease
15
15
  # @example
16
16
  # require 'create_github_release'
17
17
  #
18
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
18
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
19
19
  # project = CreateGithubRelease::Project.new(options)
20
20
  # task = CreateGithubRelease::Tasks::PushRelease.new(project)
21
21
  # begin
@@ -19,7 +19,7 @@ module CreateGithubRelease
19
19
  # @example
20
20
  # require 'create_github_release'
21
21
  #
22
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
22
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
23
23
  # project = CreateGithubRelease::Project.new(options)
24
24
  # task = CreateGithubRelease::Tasks::UpdateChangelog.new(project)
25
25
  # begin
@@ -15,7 +15,7 @@ module CreateGithubRelease
15
15
  # @example
16
16
  # require 'create_github_release'
17
17
  #
18
- # options = CreateGithubRelease::CommandLineOptions.new { |o| o.release_type = 'major' }
18
+ # options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'major' }
19
19
  # project = CreateGithubRelease::Project.new(options)
20
20
  # task = CreateGithubRelease::Tasks::UpdateVersion.new(project)
21
21
  # begin
@@ -43,7 +43,10 @@ module CreateGithubRelease
43
43
  # @return [void]
44
44
  # @api private
45
45
  def increment_version
46
- `semverify next-#{project.release_type}`
46
+ command = "semverify next-#{project.release_type}"
47
+ command += ' --pre' if project.pre
48
+ command += " --pre-type=#{project.pre_type}" if project.pre_type
49
+ `#{command}`
47
50
  error 'Could not increment version' unless $CHILD_STATUS.success?
48
51
  end
49
52
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module CreateGithubRelease
4
4
  # The version of this gem
5
- VERSION = '1.1.0'
5
+ VERSION = '1.3.0'
6
6
  end
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'create_github_release/backtick_debug'
4
- require 'create_github_release/command_line_options'
5
- require 'create_github_release/command_line_parser'
4
+ require 'create_github_release/command_line'
6
5
  require 'create_github_release/project'
7
6
 
8
7
  require 'create_github_release/change'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: create_github_release
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-16 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: semverify
@@ -108,20 +108,6 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.36'
111
- - !ruby/object:Gem::Dependency
112
- name: ruby-debug-ide
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.7'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.7'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: simplecov
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -150,20 +136,6 @@ dependencies:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
138
  version: '0.8'
153
- - !ruby/object:Gem::Dependency
154
- name: solargraph
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '0.49'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '0.49'
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: timecop
169
141
  requirement: !ruby/object:Gem::Requirement
@@ -213,6 +185,7 @@ email:
213
185
  - jcouball@yahoo.com
214
186
  executables:
215
187
  - create-github-release
188
+ - revert-github-release
216
189
  extensions: []
217
190
  extra_rdoc_files: []
218
191
  files:
@@ -229,6 +202,7 @@ files:
229
202
  - Rakefile
230
203
  - create_github_release.gemspec
231
204
  - exe/create-github-release
205
+ - exe/revert-github-release
232
206
  - lib/create_github_release.rb
233
207
  - lib/create_github_release/assertion_base.rb
234
208
  - lib/create_github_release/assertions.rb
@@ -250,8 +224,11 @@ files:
250
224
  - lib/create_github_release/backtick_debug.rb
251
225
  - lib/create_github_release/change.rb
252
226
  - lib/create_github_release/changelog.rb
253
- - lib/create_github_release/command_line_options.rb
254
- - lib/create_github_release/command_line_parser.rb
227
+ - lib/create_github_release/command_line.rb
228
+ - lib/create_github_release/command_line/options.rb
229
+ - lib/create_github_release/command_line/parser.rb
230
+ - lib/create_github_release/command_line/validations.rb
231
+ - lib/create_github_release/command_line/validator.rb
255
232
  - lib/create_github_release/project.rb
256
233
  - lib/create_github_release/release_assertions.rb
257
234
  - lib/create_github_release/release_tasks.rb
@@ -273,7 +250,8 @@ metadata:
273
250
  allowed_push_host: https://rubygems.org
274
251
  homepage_uri: https://github.com/main-branch/create_github_release
275
252
  source_code_uri: https://github.com/main-branch/create_github_release
276
- changelog_uri: https://github.com/main-branch/create_github_release
253
+ changelog_uri: https://rubydoc.info/gems/create_github_release/1.3.0/file/CHANGELOG.md
254
+ documentation_uri: https://rubydoc.info/gems/create_github_release/1.3.0
277
255
  rubygems_mfa_required: 'true'
278
256
  post_install_message:
279
257
  rdoc_options: []
@@ -290,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
268
  - !ruby/object:Gem::Version
291
269
  version: '0'
292
270
  requirements: []
293
- rubygems_version: 3.4.14
271
+ rubygems_version: 3.5.3
294
272
  signing_key:
295
273
  specification_version: 4
296
274
  summary: A script to create a GitHub release for a Ruby Gem
@@ -1,378 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'uri'
4
-
5
- module CreateGithubRelease
6
- # An array of the valid release types
7
- # @return [Array<String>]
8
- # @api private
9
- VALID_RELEASE_TYPES = %w[major minor patch first].freeze
10
-
11
- # Regex pattern for a [valid git reference](https://git-scm.com/docs/git-check-ref-format)
12
- # @return [Regexp]
13
- # @api private
14
- VALID_REF_PATTERN = /^(?:(?:[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)|(?:[a-zA-Z0-9-]+))$/
15
-
16
- # An array of the allowed options that can be passed to `.new`
17
- # @return [Array<Symbol>]
18
- ALLOWED_OPTIONS = %i[
19
- release_type default_branch release_branch remote last_release_version
20
- next_release_version changelog_path quiet verbose
21
- ].freeze
22
-
23
- # rubocop:disable Metrics/ClassLength
24
-
25
- # Stores and validates the command line options
26
- #
27
- # @example
28
- # options = CreateGithubRelease::CommandLineOptions.new
29
- # options.release_type = 'major'
30
- # options.valid? #=> true
31
- # options.errors #=> []
32
- #
33
- # @api public
34
- #
35
- class CommandLineOptions
36
- ALLOWED_OPTIONS.each { |option| attr_accessor option }
37
-
38
- # @attribute release_type [rw] the type of release to create
39
- #
40
- # Must be one of the VALID_RELEASE_TYPES
41
- #
42
- # @example
43
- # options = CreateGithubRelease::CommandLineOptions.new(release_type: 'major')
44
- # options.release_type #=> 'major'
45
- # @return [String]
46
- # @api public
47
-
48
- # @attribute default_branch [rw] the default branch of the repository
49
- # @example
50
- # options = CreateGithubRelease::CommandLineOptions.new(default_branch: 'main')
51
- # options.default_branch #=> 'main'
52
- # @return [String]
53
- # @api public
54
-
55
- # @attribute release_branch [rw] the branch use to create the release
56
- # @example
57
- # options = CreateGithubRelease::CommandLineOptions.new(release_branch: 'release-v1.0.0')
58
- # options.release_branch #=> 'release-v1.0.0'
59
- # @return [String]
60
- # @api public
61
-
62
- # @attribute remote [rw] the name of the remote to use to access Github
63
- # @example
64
- # options = CreateGithubRelease::CommandLineOptions.new(remote: 'origin')
65
- # options.remote #=> 'origin'
66
- # @return [String]
67
- # @api public
68
-
69
- # @attribute last_release_version [rw] the version of the last release
70
- # @example
71
- # options = CreateGithubRelease::CommandLineOptions.new(last_release_version: '0.1.1')
72
- # options.last_release_version #=> '0.1.1'
73
- # @return [String]
74
- # @api public
75
-
76
- # @attribute next_release_version [rw] the version of the next release
77
- # @example
78
- # options = CreateGithubRelease::CommandLineOptions.new(next_release_version: '1.0.0')
79
- # options.next_release_version #=> '1.0.0'
80
- # @return [String]
81
- # @api public
82
-
83
- # @attribute changelog_path [rw] the path to the changelog file
84
- # @example
85
- # options = CreateGithubRelease::CommandLineOptions.new(changelog_path: 'CHANGELOG.md')
86
- # options.changelog_path #=> 'CHANGELOG.md'
87
- # @return [String]
88
- # @api public
89
-
90
- # @attribute quiet [rw] if `true`, suppresses all output
91
- # @example
92
- # options = CreateGithubRelease::CommandLineOptions.new(quiet: true)
93
- # options.quiet #=> true
94
- # @return [Boolean]
95
- # @api public
96
-
97
- # @attribute verbose [rw] if `true`, enables verbose output
98
- # @example
99
- # options = CreateGithubRelease::CommandLineOptions.new(verbose: true)
100
- # options.verbose #=> true
101
- # @return [Boolean]
102
- # @api public
103
-
104
- # Create a new instance of this class
105
- #
106
- # @example No arguments or block given
107
- # options = CreateGithubRelease::CommandLineOptions.new
108
- # options.release_type #=> nil
109
- # options.valid? #=> false
110
- # options.errors #=> ["--release-type must be given and be one of 'major', 'minor', 'patch'"]
111
- #
112
- # @example With keyword arguments
113
- # config = { release_type: 'major', default_branch: 'main', quiet: true }
114
- # options = CreateGithubRelease::CommandLineOptions.new(**config)
115
- # options.release_type #=> 'major'
116
- # options.default_branch #=> 'main'
117
- # options.quiet #=> true
118
- # options.valid? #=> true
119
- #
120
- # @example with a configuration block
121
- # options = CreateGithubRelease::CommandLineOptions.new do |o|
122
- # o.release_type = 'major'
123
- # o.default_branch = 'main'
124
- # o.quiet = true
125
- # end
126
- # options.release_type #=> 'major'
127
- # options.default_branch #=> 'main'
128
- # options.quiet #=> true
129
- # options.valid? #=> true
130
- #
131
- # @yield [self] an initialization block
132
- # @yieldparam self [CreateGithubRelease::CommandLineOptions] the instance being initialized
133
- # @yieldreturn [void] the return value is ignored
134
- #
135
- def initialize(**options)
136
- assert_no_unknown_options(options)
137
- options.each { |k, v| instance_variable_set("@#{k}", v) }
138
-
139
- self.quiet ||= false
140
- self.verbose ||= false
141
- @errors = []
142
-
143
- yield(self) if block_given?
144
- end
145
-
146
- # Returns `true` if all options are valid and `false` otherwise
147
- #
148
- # * If the options are valid, returns `true` clears the `#errors` array
149
- # * If the options are not valid, returns `false` and populates the `#errors` array
150
- #
151
- # @example when all options are valid
152
- # options = CreateGithubRelease::CommandLineOptions.new
153
- # options.release_type = 'major'
154
- # options.valid? #=> true
155
- # options.errors #=> []
156
- #
157
- # @example when one or more options are not valid
158
- # options = CreateGithubRelease::CommandLineOptions.new
159
- # options.release_type #=> nil
160
- # options.valid? #=> false
161
- # options.errors #=> ["--release-type must be given and be one of 'major', 'minor', 'patch'"]
162
- #
163
- # @return [Boolean]
164
- #
165
- def valid?
166
- @errors = []
167
- private_methods(false).select { |m| m.to_s.start_with?('validate_') }.each { |m| send(m) }
168
- @errors.empty?
169
- end
170
-
171
- # Returns an array of error messages
172
- #
173
- # * If the options are valid, returns an empty array
174
- # * If the options are not valid, returns an array of error messages
175
- #
176
- # @example when all options are valid
177
- # options = CreateGithubRelease::CommandLineOptions.new
178
- # options.release_type = 'major'
179
- # options.valid? #=> true
180
- # options.errors #=> []
181
- #
182
- # @example when one or more options are not valid
183
- # options = CreateGithubRelease::CommandLineOptions.new
184
- # options.release_type #=> nil
185
- # options.quiet = options.verbose = true
186
- # options.valid? #=> false
187
- # options.errors #=> [
188
- # "Both --quiet and --verbose cannot be given",
189
- # "--release-type must be given and be one of 'major', 'minor', 'patch'"
190
- # ]
191
- #
192
- # @return [Array<String>] an array of error messages
193
- #
194
- def errors
195
- valid?
196
- @errors
197
- end
198
-
199
- private
200
-
201
- # Raise ArgumentError if options has a key not in ALLOWED_OPTIONS
202
- # @return [void]
203
- # @api private
204
- def assert_no_unknown_options(options)
205
- unknown_options = options.keys - ALLOWED_OPTIONS
206
- return if unknown_options.empty?
207
-
208
- message = "Unknown keywords: #{unknown_options.join(', ')}"
209
- raise ArgumentError, message
210
- end
211
-
212
- # Returns `true` if the given name is a valid git reference
213
- # @return [Boolean]
214
- # @api private
215
- def valid_reference?(name)
216
- VALID_REF_PATTERN.match?(name)
217
- end
218
-
219
- # Returns `true` if the `#quiet` is `true` or `false` and `false` otherwise
220
- # @return [Boolean]
221
- # @api private
222
- def validate_quiet
223
- return true if quiet == true || quiet == false
224
-
225
- @errors << 'quiet must be either true or false'
226
- false
227
- end
228
-
229
- # Returns `true` if the `#verbose` is `true` or `false` and `false` otherwise
230
- # @return [Boolean]
231
- # @api private
232
- def validate_verbose
233
- return true if verbose == true || verbose == false
234
-
235
- @errors << 'verbose must be either true or false'
236
- false
237
- end
238
-
239
- # Returns `true` if only one of `#quiet` or `#verbose` is `true`
240
- # @return [Boolean]
241
- # @api private
242
- def validate_only_quiet_or_verbose_given
243
- return true unless quiet && verbose
244
-
245
- @errors << 'Both --quiet and --verbose cannot both be used'
246
- false
247
- end
248
-
249
- # Returns `true` if the `#release_type` is not nil
250
- # @return [Boolean]
251
- # @api private
252
- def validate_release_type_given
253
- return true unless release_type.nil?
254
-
255
- valid_release_types = "'#{VALID_RELEASE_TYPES.join("', '")}'"
256
- @errors << "RELEASE_TYPE must be given and be one of #{valid_release_types}"
257
- false
258
- end
259
-
260
- # Returns `true` if the `#release_type` is nil or a valid release type
261
- # @return [Boolean]
262
- # @api private
263
- def validate_release_type
264
- return true if release_type.nil? || VALID_RELEASE_TYPES.include?(release_type)
265
-
266
- valid_release_types = "'#{VALID_RELEASE_TYPES.join("', '")}'"
267
- @errors << "RELEASE_TYPE '#{release_type}' is not valid. Must be one of #{valid_release_types}"
268
- false
269
- end
270
-
271
- # Returns `true` if the `#default_branch` is nil or is a valid git reference
272
- # @return [Boolean]
273
- # @api private
274
- def validate_default_branch
275
- return true if default_branch.nil? || valid_reference?(default_branch)
276
-
277
- @errors << "--default-branch='#{default_branch}' is not valid"
278
- false
279
- end
280
-
281
- # Returns `true` if the `#release_branch` is nil or is a valid git reference
282
- # @return [Boolean]
283
- # @api private
284
- def validate_release_branch
285
- return true if release_branch.nil? || valid_reference?(release_branch)
286
-
287
- @errors << "--release-branch='#{release_branch}' is not valid"
288
- false
289
- end
290
-
291
- # Returns `true` if the `#remote` is nil or is a valid git reference
292
- # @return [Boolean]
293
- # @api private
294
- def validate_remote
295
- return true if remote.nil? || valid_reference?(remote)
296
-
297
- @errors << "--remote='#{remote}' is not valid"
298
- false
299
- end
300
-
301
- # Returns `true` if the given version is a valid gem version
302
- # @return [Boolean]
303
- # @api private
304
- def valid_gem_version?(version)
305
- Gem::Version.new(version)
306
- true
307
- rescue ArgumentError
308
- false
309
- end
310
-
311
- # Returns `true` if the `#last_release_version` is nil or is a valid gem version
312
- # @return [Boolean]
313
- # @api private
314
- def validate_last_release_version
315
- return true if last_release_version.nil?
316
-
317
- if valid_gem_version?(last_release_version)
318
- true
319
- else
320
- @errors << "--last-release-version='#{last_release_version}' is not valid"
321
- false
322
- end
323
- end
324
-
325
- # Returns `true` if the `#next_release_version` is nil or is a valid gem version
326
- # @return [Boolean]
327
- # @api private
328
- def validate_next_release_version
329
- return true if next_release_version.nil?
330
-
331
- if valid_gem_version?(next_release_version)
332
- true
333
- else
334
- @errors << "--next-release-version='#{next_release_version}' is not valid"
335
- false
336
- end
337
- end
338
-
339
- # Returns `true` if the given path is valid
340
- # @param path [String] the path to validate
341
- # @return [Boolean]
342
- # @api private
343
- def valid_path?(path)
344
- File.expand_path(path)
345
- true
346
- rescue ArgumentError
347
- false
348
- end
349
-
350
- # Returns `true` if `#changelog_path` is nil or is a valid regular file path
351
- # @return [Boolean]
352
- # @api private
353
- def validate_changelog_path
354
- changelog_path.nil? || (changelog_path_valid? && changelog_regular_file?)
355
- end
356
-
357
- # `true` if `#changelog_path` is a valid path
358
- # @return [Boolean]
359
- # @api private
360
- def changelog_path_valid?
361
- return true if valid_path?(changelog_path)
362
-
363
- @errors << "--changelog-path='#{changelog_path}' is not valid"
364
- false
365
- end
366
-
367
- # `true` if `#changelog_path` does not exist OR if it exists and is a regular file
368
- # @return [Boolean]
369
- # @api private
370
- def changelog_regular_file?
371
- return true unless File.exist?(changelog_path) && !File.file?(changelog_path)
372
-
373
- @errors << "--changelog-path='#{changelog_path}' must be a regular file"
374
- false
375
- end
376
- end
377
- # rubocop:enable Metrics/ClassLength
378
- end