create_github_release 1.1.0 → 1.3.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.
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