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.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/CHANGELOG.md +18 -0
- data/README.md +156 -38
- data/Rakefile +6 -6
- data/create_github_release.gemspec +3 -3
- data/exe/create-github-release +1 -1
- data/exe/revert-github-release +165 -0
- data/lib/create_github_release/assertions/bundle_is_up_to_date.rb +1 -1
- data/lib/create_github_release/assertions/gh_authenticated.rb +1 -1
- data/lib/create_github_release/assertions/gh_command_exists.rb +1 -1
- data/lib/create_github_release/assertions/git_command_exists.rb +1 -1
- data/lib/create_github_release/assertions/in_git_repo.rb +1 -1
- data/lib/create_github_release/assertions/in_repo_root_directory.rb +1 -1
- data/lib/create_github_release/assertions/local_and_remote_on_same_commit.rb +1 -1
- data/lib/create_github_release/assertions/local_release_branch_does_not_exist.rb +1 -1
- data/lib/create_github_release/assertions/no_staged_changes.rb +1 -1
- data/lib/create_github_release/assertions/no_uncommitted_changes.rb +1 -1
- data/lib/create_github_release/assertions/on_default_branch.rb +1 -1
- data/lib/create_github_release/assertions/remote_release_branch_does_not_exist.rb +1 -1
- data/lib/create_github_release/assertions/remote_release_tag_does_not_exist.rb +1 -1
- data/lib/create_github_release/command_line/options.rb +151 -0
- data/lib/create_github_release/command_line/parser.rb +262 -0
- data/lib/create_github_release/command_line/validations.rb +293 -0
- data/lib/create_github_release/command_line/validator.rb +93 -0
- data/lib/create_github_release/command_line.rb +43 -0
- data/lib/create_github_release/project.rb +115 -55
- data/lib/create_github_release/release_assertions.rb +1 -1
- data/lib/create_github_release/release_tasks.rb +1 -1
- data/lib/create_github_release/tasks/commit_release.rb +1 -1
- data/lib/create_github_release/tasks/create_github_release.rb +1 -1
- data/lib/create_github_release/tasks/create_release_branch.rb +1 -1
- data/lib/create_github_release/tasks/create_release_pull_request.rb +1 -1
- data/lib/create_github_release/tasks/create_release_tag.rb +1 -1
- data/lib/create_github_release/tasks/push_release.rb +1 -1
- data/lib/create_github_release/tasks/update_changelog.rb +1 -1
- data/lib/create_github_release/tasks/update_version.rb +5 -2
- data/lib/create_github_release/version.rb +1 -1
- data/lib/create_github_release.rb +1 -2
- metadata +12 -34
- data/lib/create_github_release/command_line_options.rb +0 -378
- 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::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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
|
-
|
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
|
|
@@ -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/
|
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.
|
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:
|
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/
|
254
|
-
- lib/create_github_release/
|
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://
|
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.
|
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
|