decidim 0.28.0.rc4 → 0.28.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@decidim/eslint-config",
3
3
  "description": "The eslint configuration for Decidim",
4
- "version": "0.28.0-rc4",
4
+ "version": "0.28.0-rc5",
5
5
  "repository": {
6
6
  "url": "git@github.com:decidim/decidim.git",
7
7
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@decidim/prettier-config",
3
3
  "description": "The prettier configuration for Decidim",
4
- "version": "0.28.0-rc4",
4
+ "version": "0.28.0-rc5",
5
5
  "repository": {
6
6
  "url": "git@github.com:decidim/decidim.git",
7
7
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@decidim/stylelint-config",
3
3
  "description": "The stylelint configuration for Decidim",
4
- "version": "0.28.0-rc4",
4
+ "version": "0.28.0-rc5",
5
5
  "repository": {
6
6
  "url": "git@github.com:decidim/decidim.git",
7
7
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@decidim/webpacker",
3
3
  "description": "The webpacker dependencies for Decidim",
4
- "version": "0.28.0-rc4",
4
+ "version": "0.28.0-rc5",
5
5
  "repository": {
6
6
  "url": "git@github.com:decidim/decidim.git",
7
7
  "type": "git",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.0.rc4
4
+ version: 0.28.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-12-11 00:00:00.000000000 Z
13
+ date: 2023-12-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: decidim-accountability
@@ -18,280 +18,280 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.28.0.rc4
21
+ version: 0.28.0.rc5
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 0.28.0.rc4
28
+ version: 0.28.0.rc5
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: decidim-admin
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.28.0.rc4
35
+ version: 0.28.0.rc5
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.28.0.rc4
42
+ version: 0.28.0.rc5
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: decidim-api
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.28.0.rc4
49
+ version: 0.28.0.rc5
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 0.28.0.rc4
56
+ version: 0.28.0.rc5
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: decidim-assemblies
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.28.0.rc4
63
+ version: 0.28.0.rc5
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.28.0.rc4
70
+ version: 0.28.0.rc5
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: decidim-blogs
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.28.0.rc4
77
+ version: 0.28.0.rc5
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 0.28.0.rc4
84
+ version: 0.28.0.rc5
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: decidim-budgets
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.28.0.rc4
91
+ version: 0.28.0.rc5
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '='
97
97
  - !ruby/object:Gem::Version
98
- version: 0.28.0.rc4
98
+ version: 0.28.0.rc5
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: decidim-comments
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - '='
104
104
  - !ruby/object:Gem::Version
105
- version: 0.28.0.rc4
105
+ version: 0.28.0.rc5
106
106
  type: :runtime
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 0.28.0.rc4
112
+ version: 0.28.0.rc5
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: decidim-core
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - '='
118
118
  - !ruby/object:Gem::Version
119
- version: 0.28.0.rc4
119
+ version: 0.28.0.rc5
120
120
  type: :runtime
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - '='
125
125
  - !ruby/object:Gem::Version
126
- version: 0.28.0.rc4
126
+ version: 0.28.0.rc5
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: decidim-debates
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - '='
132
132
  - !ruby/object:Gem::Version
133
- version: 0.28.0.rc4
133
+ version: 0.28.0.rc5
134
134
  type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - '='
139
139
  - !ruby/object:Gem::Version
140
- version: 0.28.0.rc4
140
+ version: 0.28.0.rc5
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: decidim-forms
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - '='
146
146
  - !ruby/object:Gem::Version
147
- version: 0.28.0.rc4
147
+ version: 0.28.0.rc5
148
148
  type: :runtime
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - '='
153
153
  - !ruby/object:Gem::Version
154
- version: 0.28.0.rc4
154
+ version: 0.28.0.rc5
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: decidim-generators
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - '='
160
160
  - !ruby/object:Gem::Version
161
- version: 0.28.0.rc4
161
+ version: 0.28.0.rc5
162
162
  type: :runtime
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
166
  - - '='
167
167
  - !ruby/object:Gem::Version
168
- version: 0.28.0.rc4
168
+ version: 0.28.0.rc5
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: decidim-meetings
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
173
  - - '='
174
174
  - !ruby/object:Gem::Version
175
- version: 0.28.0.rc4
175
+ version: 0.28.0.rc5
176
176
  type: :runtime
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
180
  - - '='
181
181
  - !ruby/object:Gem::Version
182
- version: 0.28.0.rc4
182
+ version: 0.28.0.rc5
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: decidim-pages
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - '='
188
188
  - !ruby/object:Gem::Version
189
- version: 0.28.0.rc4
189
+ version: 0.28.0.rc5
190
190
  type: :runtime
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
194
  - - '='
195
195
  - !ruby/object:Gem::Version
196
- version: 0.28.0.rc4
196
+ version: 0.28.0.rc5
197
197
  - !ruby/object:Gem::Dependency
198
198
  name: decidim-participatory_processes
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
201
  - - '='
202
202
  - !ruby/object:Gem::Version
203
- version: 0.28.0.rc4
203
+ version: 0.28.0.rc5
204
204
  type: :runtime
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
208
  - - '='
209
209
  - !ruby/object:Gem::Version
210
- version: 0.28.0.rc4
210
+ version: 0.28.0.rc5
211
211
  - !ruby/object:Gem::Dependency
212
212
  name: decidim-proposals
213
213
  requirement: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - '='
216
216
  - !ruby/object:Gem::Version
217
- version: 0.28.0.rc4
217
+ version: 0.28.0.rc5
218
218
  type: :runtime
219
219
  prerelease: false
220
220
  version_requirements: !ruby/object:Gem::Requirement
221
221
  requirements:
222
222
  - - '='
223
223
  - !ruby/object:Gem::Version
224
- version: 0.28.0.rc4
224
+ version: 0.28.0.rc5
225
225
  - !ruby/object:Gem::Dependency
226
226
  name: decidim-sortitions
227
227
  requirement: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - '='
230
230
  - !ruby/object:Gem::Version
231
- version: 0.28.0.rc4
231
+ version: 0.28.0.rc5
232
232
  type: :runtime
233
233
  prerelease: false
234
234
  version_requirements: !ruby/object:Gem::Requirement
235
235
  requirements:
236
236
  - - '='
237
237
  - !ruby/object:Gem::Version
238
- version: 0.28.0.rc4
238
+ version: 0.28.0.rc5
239
239
  - !ruby/object:Gem::Dependency
240
240
  name: decidim-surveys
241
241
  requirement: !ruby/object:Gem::Requirement
242
242
  requirements:
243
243
  - - '='
244
244
  - !ruby/object:Gem::Version
245
- version: 0.28.0.rc4
245
+ version: 0.28.0.rc5
246
246
  type: :runtime
247
247
  prerelease: false
248
248
  version_requirements: !ruby/object:Gem::Requirement
249
249
  requirements:
250
250
  - - '='
251
251
  - !ruby/object:Gem::Version
252
- version: 0.28.0.rc4
252
+ version: 0.28.0.rc5
253
253
  - !ruby/object:Gem::Dependency
254
254
  name: decidim-system
255
255
  requirement: !ruby/object:Gem::Requirement
256
256
  requirements:
257
257
  - - '='
258
258
  - !ruby/object:Gem::Version
259
- version: 0.28.0.rc4
259
+ version: 0.28.0.rc5
260
260
  type: :runtime
261
261
  prerelease: false
262
262
  version_requirements: !ruby/object:Gem::Requirement
263
263
  requirements:
264
264
  - - '='
265
265
  - !ruby/object:Gem::Version
266
- version: 0.28.0.rc4
266
+ version: 0.28.0.rc5
267
267
  - !ruby/object:Gem::Dependency
268
268
  name: decidim-templates
269
269
  requirement: !ruby/object:Gem::Requirement
270
270
  requirements:
271
271
  - - '='
272
272
  - !ruby/object:Gem::Version
273
- version: 0.28.0.rc4
273
+ version: 0.28.0.rc5
274
274
  type: :runtime
275
275
  prerelease: false
276
276
  version_requirements: !ruby/object:Gem::Requirement
277
277
  requirements:
278
278
  - - '='
279
279
  - !ruby/object:Gem::Version
280
- version: 0.28.0.rc4
280
+ version: 0.28.0.rc5
281
281
  - !ruby/object:Gem::Dependency
282
282
  name: decidim-verifications
283
283
  requirement: !ruby/object:Gem::Requirement
284
284
  requirements:
285
285
  - - '='
286
286
  - !ruby/object:Gem::Version
287
- version: 0.28.0.rc4
287
+ version: 0.28.0.rc5
288
288
  type: :runtime
289
289
  prerelease: false
290
290
  version_requirements: !ruby/object:Gem::Requirement
291
291
  requirements:
292
292
  - - '='
293
293
  - !ruby/object:Gem::Version
294
- version: 0.28.0.rc4
294
+ version: 0.28.0.rc5
295
295
  - !ruby/object:Gem::Dependency
296
296
  name: bundler
297
297
  requirement: !ruby/object:Gem::Requirement
@@ -484,7 +484,6 @@ files:
484
484
  - lib/decidim/github_manager/querier/by_label.rb
485
485
  - lib/decidim/github_manager/querier/related_issues.rb
486
486
  - lib/decidim/release_manager.rb
487
- - lib/decidim/releaser.rb
488
487
  - lib/decidim/version.rb
489
488
  - lib/tasks/common_passwords_tasks.rake
490
489
  - lib/tasks/decidim_tasks.rake
@@ -520,13 +519,14 @@ files:
520
519
  - packages/core/node_modules/diff/package.json
521
520
  - packages/core/node_modules/diff/release-notes.md
522
521
  - packages/core/node_modules/diff/runtime.js
522
+ - packages/core/package-lock.json
523
523
  - packages/core/package.json
524
524
  - packages/dev/package.json
525
525
  - packages/elections/package.json
526
526
  - packages/eslint-config/index.js
527
+ - packages/eslint-config/package-lock.json
527
528
  - packages/eslint-config/package.json
528
529
  - packages/prettier-config/index.js
529
- - packages/prettier-config/package-lock.json
530
530
  - packages/prettier-config/package.json
531
531
  - packages/stylelint-config/index.js
532
532
  - packages/stylelint-config/package.json
@@ -4132,7 +4132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
4132
4132
  - !ruby/object:Gem::Version
4133
4133
  version: 1.3.1
4134
4134
  requirements: []
4135
- rubygems_version: 3.4.20
4135
+ rubygems_version: 3.4.22
4136
4136
  signing_key:
4137
4137
  specification_version: 4
4138
4138
  summary: Citizen participation framework for Ruby on Rails.
@@ -1,260 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "open3"
4
- require "decidim/github_manager/poster"
5
-
6
- module Decidim
7
- class Releaser
8
- class InvalidMetadataError < StandardError; end
9
-
10
- class InvalidBranchError < StandardError; end
11
-
12
- class InvalidVersionTypeError < StandardError; end
13
-
14
- DECIDIM_VERSION_FILE = ".decidim-version"
15
-
16
- # @param token [String] token for GitHub authentication
17
- # @param version_type [String] The kind of release that you want to prepare. Supported values: rc, minor, patch
18
- # @param working_dir [String] current working directory. Useful for testing purposes
19
- # @param exit_with_unstaged_changes [Boolean] wheter we should exit cowardly if there is any unstaged change
20
- def initialize(token:, version_type:, working_dir: Dir.pwd, exit_with_unstaged_changes: false)
21
- @token = token
22
- @version_type = version_type
23
- @working_dir = working_dir
24
- @exit_with_unstaged_changes = exit_with_unstaged_changes
25
- end
26
-
27
- def call
28
- Dir.chdir(@working_dir) do
29
- exit_if_unstaged_changes if @exit_with_unstaged_changes
30
-
31
- run("git checkout #{release_branch}")
32
- run("git pull origin #{release_branch}")
33
- bump_decidim_version
34
- run("bin/rake update_versions")
35
- run("bin/rake bundle")
36
- run("npm install")
37
-
38
- check_tests
39
-
40
- generate_changelog
41
-
42
- run("git checkout -b chore/prepare/#{version_number}")
43
- run("git commit -a -m 'Prepare #{version_number} release'")
44
- run("git push origin chore/prepare/#{version_number}")
45
-
46
- create_pull_request
47
- end
48
- end
49
-
50
- private
51
-
52
- # The git branch
53
- #
54
- # @return [String]
55
- def branch
56
- @branch ||= capture("git rev-parse --abbrev-ref HEAD")[0].strip
57
- end
58
-
59
- # Raise an error if the branch does not start with the preffix "release/"
60
- # or returns the branch name
61
- #
62
- # @raise [InvalidBranchError]
63
- #
64
- # @return [String]
65
- def release_branch
66
- raise InvalidBranchError, "This is not a release branch, aborting" unless branch.start_with?("release/")
67
-
68
- branch
69
- end
70
-
71
- # Changes the decidim version in the file
72
- #
73
- # @return [void]
74
- def bump_decidim_version
75
- File.write(DECIDIM_VERSION_FILE, version_number)
76
- end
77
-
78
- # The version number for the release that we are preparing
79
- #
80
- # @todo support the "minor" type version
81
- #
82
- # @return [String] the version number
83
- def version_number
84
- @version_number ||= case @version_type
85
- when "rc"
86
- next_version_number_for_release_candidate(old_version_number)
87
- when "patch"
88
- next_version_number_for_patch_release(old_version_number)
89
- else
90
- raise InvalidVersionTypeError, "This is not a supported version type"
91
- end
92
- end
93
-
94
- def parsed_version_number(version_number)
95
- /(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)/ =~ version_number
96
-
97
- { major: major.to_i, minor: minor.to_i, patch: patch.to_i }
98
- end
99
-
100
- # Given a version number, returns the next release candidate
101
- #
102
- # If the current version number is `dev`, then we return the `rc1` version
103
- # If the current version number is `rc`, then we return the next `rc` version
104
- # Else, it means is a `minor` or `patch` version. On those cases we raise an Exception, as releases candidates should
105
- # be only done from a `dev` or a `rc` version.
106
- #
107
- # @raise [InvalidVersionTypeError]
108
- #
109
- # @param current_version_number [String] - The version number of the current version
110
- #
111
- # @return [String] - the new version number
112
- def next_version_number_for_release_candidate(current_version_number)
113
- if current_version_number.include? "dev"
114
- parsed_version_number(current_version_number) => { major:, minor:, patch: }
115
- new_version_number = "#{major}.#{minor}.#{patch}.rc1"
116
- elsif current_version_number.include? "rc"
117
- new_rc_number = current_version_number.match(/rc(\d)/)[1].to_i + 1
118
- new_version_number = current_version_number.gsub(/rc\d/, "rc#{new_rc_number}")
119
- else
120
- error_message = <<-EOMESSAGE
121
- Trying to do a release candidate version from patch release. Bailing out.
122
- You need to do a release candidate from a `dev` or from another `rc` version
123
- EOMESSAGE
124
- raise InvalidVersionTypeError, error_message
125
- end
126
-
127
- new_version_number
128
- end
129
-
130
- # Given a version number, returns the next patch release
131
- #
132
- # If the current version number is `dev`, then we raise an Exception, as you need to first do a release candidate.
133
- # If the current version number is `rc`, then we return the `0` patch version
134
- # Else, it means is a `patch` version, so we return the next patch version
135
- #
136
- # @raise [InvalidVersionTypeError]
137
- #
138
- # @param current_version_number [String] - The version number of the current version
139
- #
140
- # @return [String] - the new version number
141
- def next_version_number_for_patch_release(current_version_number)
142
- parsed_version_number(current_version_number) => { major:, minor:, patch: }
143
-
144
- if current_version_number.include? "dev"
145
- error_message = <<-EOMESSAGE
146
- Trying to do a patch version from dev release. Bailing out.
147
- You need to do first a release candidate.
148
- EOMESSAGE
149
- raise InvalidVersionTypeError, error_message
150
- elsif current_version_number.include? "rc"
151
- new_version_number = "#{major}.#{minor}.0"
152
- else
153
- new_version_number = "#{major}.#{minor}.#{patch.to_i + 1}"
154
- end
155
-
156
- new_version_number
157
- end
158
-
159
- # The version number from the file
160
- #
161
- # @return [String] the version number
162
- def old_version_number
163
- File.read(DECIDIM_VERSION_FILE).strip
164
- end
165
-
166
- # Run the tests and if fails restore the changes using git and exit with an error
167
- #
168
- # @return [void]
169
- def check_tests
170
- # rubocop:disable Rails/Output
171
- puts "Running specs"
172
- output, status = capture("bin/rspec")
173
-
174
- unless status.success?
175
- run("git restore .")
176
- puts output
177
- exit_with_errors("Tests execution failed. Fix the errors and run again.")
178
- end
179
- # rubocop:enable Rails/Output
180
- end
181
-
182
- # Generates the changelog taking into account the last time the version changed
183
- #
184
- # @return [void]
185
- def generate_changelog
186
- sha_version = capture("git log -n 1 --pretty=format:%h -- .decidim-version")[0]
187
- run("bin/changelog_generator #{@token} #{sha_version}")
188
- temporary_changelog = File.read("./temporary_changelog.md")
189
- legacy_changelog = File.read("./CHANGELOG.md")
190
- version_changelog = "## [#{version_number}](https://github.com/decidim/decidim/tree/#{version_number})\n\n#{temporary_changelog}\n"
191
- changelog = legacy_changelog.gsub("# Changelog\n\n", "# Changelog\n\n#{version_changelog}")
192
- File.write("./CHANGELOG.md", changelog)
193
- end
194
-
195
- # Creates the pull request for bumping the version
196
- #
197
- # @return [void]
198
- def create_pull_request
199
- base_branch = release_branch
200
- head_branch = "chore/prepare/#{version_number}"
201
-
202
- params = {
203
- title: "Bump to v#{version_number} version",
204
- body: "#### :tophat: What? Why?
205
-
206
- This PR changes the version of the #{release_branch} branch, so we can publish the release once this is approved and merged.
207
-
208
- #### Testing
209
-
210
- All the tests should pass, except for some generators tests, that will fail because the gems and NPM packages have not
211
- been actually published yet (as in sent to rubygems/npm).
212
- You will see errors such as `No matching version found for @decidim/browserslist-config@~0.xx.y` in the CI logs.
213
-
214
- :hearts: Thank you!
215
- ",
216
- labels: ["type: internal"],
217
- head: head_branch,
218
- base: base_branch
219
- }
220
- Decidim::GithubManager::Poster.new(token: @token, params:).call
221
- end
222
-
223
- # Captures to output of a command
224
- #
225
- # @return [Array<String, Process::Status>] The stdout and stderr of the command and its status (aka error code)
226
- def capture(cmd, env: {})
227
- Open3.capture2e(env, cmd)
228
- end
229
-
230
- # Runs a command
231
- #
232
- # @return [void]
233
- def run(cmd, out: $stdout)
234
- system(cmd, out:)
235
- end
236
-
237
- # Exit the script execution if there are any unstaged changes
238
- #
239
- # @return [void]
240
- def exit_if_unstaged_changes
241
- return if `git diff`.empty?
242
-
243
- error_message = <<-EOERROR
244
- There are changes not staged in your project.
245
- Please commit your changes or stash them.
246
- EOERROR
247
- exit_with_errors(error_message)
248
- end
249
-
250
- # Exit the script execution with a message
251
- #
252
- # @return [void]
253
- def exit_with_errors(message)
254
- # rubocop:disable Rails/Output, Rails/Exit
255
- puts message
256
- exit 1
257
- # rubocop:enable Rails/Output, Rails/Exit
258
- end
259
- end
260
- end