fastlane 2.212.1 → 2.213.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/deliver/lib/deliver/runner.rb +7 -7
  4. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +44 -5
  5. data/fastlane/lib/fastlane/version.rb +1 -1
  6. data/fastlane/swift/Deliverfile.swift +1 -1
  7. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  8. data/fastlane/swift/Fastlane.swift +28 -4
  9. data/fastlane/swift/Gymfile.swift +1 -1
  10. data/fastlane/swift/GymfileProtocol.swift +1 -1
  11. data/fastlane/swift/Matchfile.swift +1 -1
  12. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  13. data/fastlane/swift/Precheckfile.swift +1 -1
  14. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  15. data/fastlane/swift/Scanfile.swift +1 -1
  16. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  17. data/fastlane/swift/Screengrabfile.swift +1 -1
  18. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  19. data/fastlane/swift/Snapshotfile.swift +1 -1
  20. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  21. data/fastlane/swift/formatting/Brewfile.lock.json +17 -17
  22. data/fastlane_core/lib/fastlane_core/cert_checker.rb +0 -5
  23. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +48 -14
  24. data/match/lib/match/importer.rb +1 -0
  25. data/match/lib/match/nuke.rb +1 -0
  26. data/match/lib/match/options.rb +5 -0
  27. data/match/lib/match/runner.rb +1 -0
  28. data/match/lib/match/storage/gitlab_secure_files.rb +10 -4
  29. data/pilot/lib/pilot/build_manager.rb +4 -4
  30. data/scan/lib/scan/detect_values.rb +8 -1
  31. data/scan/lib/scan/options.rb +5 -0
  32. data/snapshot/lib/snapshot/latest_os_version.rb +2 -5
  33. data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -2
  34. data/spaceship/lib/spaceship/tunes/tunes_client.rb +1 -1
  35. metadata +30 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 244364fbe5e40c851dc1afbb79fe8c79ba76fedee6e607d7cf950f043ba7b921
4
- data.tar.gz: 5f4f4f4462eb64a87ed63df0ece646c100ae8d3a0c37a84eff9cbad76f51c2a8
3
+ metadata.gz: 4ac7eee0c8810536692c5ffca62c0f0924595f223d889affb732cb72f98e64be
4
+ data.tar.gz: 6d91512766cfd352f98cfa4fc905f366bd4c6eefe8ddf680ddddb1e222827120
5
5
  SHA512:
6
- metadata.gz: ae5c7a99e698db70b74516d415601ee4368fa864cd114a867d44098e0e52a2b68a361fc0178f902c0f0e6fefe3618639a259c92bde33906cb6a0501aa82d18e2
7
- data.tar.gz: b736ceec481316c6d9cde333299bff4c8145e5b11f5e802acb60a9c59028c9a9444a7a771dcf8f21f952a3cd64e2959e7a87ae224fecad503e34a1d032481123
6
+ metadata.gz: e7ebfc7fcd8d9883e053fe32e277a31aa70b98082532efdd310d7bd4b6e44976e4445e345c980f41b19baaa31ba6dcff626af80299393d97f83e45ff8f2c4558
7
+ data.tar.gz: eec9c6e744bced6eacc16bd85c2cf86cc2e5cb920e2c031add3a0d5690b9e6b675b68d5bcb89db5cef48ec1367b2d6e610ac83eb9271c98e08f6ad0ba80225d8
data/README.md CHANGED
@@ -35,17 +35,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='roger-oba'>
39
- <a href='https://github.com/rogerluan'>
40
- <img src='https://github.com/rogerluan.png' width='140px;'>
38
+ <td id='daniel-jankowski'>
39
+ <a href='https://github.com/mollyIV'>
40
+ <img src='https://github.com/mollyIV.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
43
43
  </td>
44
- <td id='fumiya-nakamura'>
45
- <a href='https://github.com/nafu'>
46
- <img src='https://github.com/nafu.png' width='140px;'>
44
+ <td id='jan-piotrowski'>
45
+ <a href='https://github.com/janpio'>
46
+ <img src='https://github.com/janpio.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
49
49
  </td>
50
50
  <td id='josh-holtz'>
51
51
  <a href='https://github.com/joshdholtz'>
@@ -53,25 +53,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
53
53
  </a>
54
54
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
55
55
  </td>
56
- <td id='daniel-jankowski'>
57
- <a href='https://github.com/mollyIV'>
58
- <img src='https://github.com/mollyIV.png' width='140px;'>
56
+ <td id='manu-wallner'>
57
+ <a href='https://github.com/milch'>
58
+ <img src='https://github.com/milch.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
61
61
  </td>
62
- <td id='jan-piotrowski'>
63
- <a href='https://github.com/janpio'>
64
- <img src='https://github.com/janpio.png' width='140px;'>
62
+ <td id='kohki-miki'>
63
+ <a href='https://github.com/giginet'>
64
+ <img src='https://github.com/giginet.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='satoshi-namai'>
71
- <a href='https://github.com/ainame'>
72
- <img src='https://github.com/ainame.png' width='140px;'>
70
+ <td id='jérôme-lacoste'>
71
+ <a href='https://github.com/lacostej'>
72
+ <img src='https://github.com/lacostej.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
75
+ </td>
76
+ <td id='olivier-halligon'>
77
+ <a href='https://github.com/AliSoftware'>
78
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
75
81
  </td>
76
82
  <td id='danielle-tomlinson'>
77
83
  <a href='https://github.com/endocrimes'>
@@ -79,11 +85,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
79
85
  </a>
80
86
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
81
87
  </td>
82
- <td id='stefan-natchev'>
83
- <a href='https://github.com/snatchev'>
84
- <img src='https://github.com/snatchev.png' width='140px;'>
88
+ <td id='roger-oba'>
89
+ <a href='https://github.com/rogerluan'>
90
+ <img src='https://github.com/rogerluan.png' width='140px;'>
85
91
  </a>
86
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
93
+ </td>
94
+ <td id='luka-mirosevic'>
95
+ <a href='https://github.com/lmirosevic'>
96
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td id='łukasz-grabowski'>
103
+ <a href='https://github.com/lucgrabowski'>
104
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'>Łukasz Grabowski</h4>
87
107
  </td>
88
108
  <td id='matthew-ellis'>
89
109
  <a href='https://github.com/matthewellis'>
@@ -91,6 +111,18 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
111
  </a>
92
112
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
93
113
  </td>
114
+ <td id='jimmy-dee'>
115
+ <a href='https://github.com/jdee'>
116
+ <img src='https://github.com/jdee.png' width='140px;'>
117
+ </a>
118
+ <h4 align='center'>Jimmy Dee</h4>
119
+ </td>
120
+ <td id='max-ott'>
121
+ <a href='https://github.com/max-ott'>
122
+ <img src='https://github.com/max-ott.png' width='140px;'>
123
+ </a>
124
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
125
+ </td>
94
126
  <td id='iulian-onofrei'>
95
127
  <a href='https://github.com/revolter'>
96
128
  <img src='https://github.com/revolter.png' width='140px;'>
@@ -99,23 +131,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
99
131
  </td>
100
132
  </tr>
101
133
  <tr>
102
- <td id='jorge-revuelta-h'>
103
- <a href='https://github.com/minuscorp'>
104
- <img src='https://github.com/minuscorp.png' width='140px;'>
105
- </a>
106
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
107
- </td>
108
- <td id='maksym-grebenets'>
109
- <a href='https://github.com/mgrebenets'>
110
- <img src='https://github.com/mgrebenets.png' width='140px;'>
134
+ <td id='joshua-liebowitz'>
135
+ <a href='https://github.com/taquitos'>
136
+ <img src='https://github.com/taquitos.png' width='140px;'>
111
137
  </a>
112
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
113
139
  </td>
114
- <td id='luka-mirosevic'>
115
- <a href='https://github.com/lmirosevic'>
116
- <img src='https://github.com/lmirosevic.png' width='140px;'>
140
+ <td id='andrew-mcburney'>
141
+ <a href='https://github.com/armcburney'>
142
+ <img src='https://github.com/armcburney.png' width='140px;'>
117
143
  </a>
118
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
119
145
  </td>
120
146
  <td id='manish-rathi'>
121
147
  <a href='https://github.com/crazymanish'>
@@ -123,83 +149,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
123
149
  </a>
124
150
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
125
151
  </td>
126
- <td id='felix-krause'>
127
- <a href='https://github.com/KrauseFx'>
128
- <img src='https://github.com/KrauseFx.png' width='140px;'>
129
- </a>
130
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
131
- </td>
132
- </tr>
133
- <tr>
134
- <td id='helmut-januschka'>
135
- <a href='https://github.com/hjanuschka'>
136
- <img src='https://github.com/hjanuschka.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
139
- </td>
140
- <td id='olivier-halligon'>
141
- <a href='https://github.com/AliSoftware'>
142
- <img src='https://github.com/AliSoftware.png' width='140px;'>
143
- </a>
144
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
145
- </td>
146
- <td id='łukasz-grabowski'>
147
- <a href='https://github.com/lucgrabowski'>
148
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
149
- </a>
150
- <h4 align='center'>Łukasz Grabowski</h4>
151
- </td>
152
- <td id='kohki-miki'>
153
- <a href='https://github.com/giginet'>
154
- <img src='https://github.com/giginet.png' width='140px;'>
152
+ <td id='aaron-brager'>
153
+ <a href='https://github.com/getaaron'>
154
+ <img src='https://github.com/getaaron.png' width='140px;'>
155
155
  </a>
156
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
157
157
  </td>
158
- <td id='joshua-liebowitz'>
159
- <a href='https://github.com/taquitos'>
160
- <img src='https://github.com/taquitos.png' width='140px;'>
158
+ <td id='satoshi-namai'>
159
+ <a href='https://github.com/ainame'>
160
+ <img src='https://github.com/ainame.png' width='140px;'>
161
161
  </a>
162
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='jimmy-dee'>
167
- <a href='https://github.com/jdee'>
168
- <img src='https://github.com/jdee.png' width='140px;'>
166
+ <td id='fumiya-nakamura'>
167
+ <a href='https://github.com/nafu'>
168
+ <img src='https://github.com/nafu.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'>Jimmy Dee</h4>
170
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
171
171
  </td>
172
- <td id='manu-wallner'>
173
- <a href='https://github.com/milch'>
174
- <img src='https://github.com/milch.png' width='140px;'>
172
+ <td id='helmut-januschka'>
173
+ <a href='https://github.com/hjanuschka'>
174
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
175
175
  </a>
176
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
177
177
  </td>
178
- <td id='aaron-brager'>
179
- <a href='https://github.com/getaaron'>
180
- <img src='https://github.com/getaaron.png' width='140px;'>
178
+ <td id='jorge-revuelta-h'>
179
+ <a href='https://github.com/minuscorp'>
180
+ <img src='https://github.com/minuscorp.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
183
183
  </td>
184
- <td id='max-ott'>
185
- <a href='https://github.com/max-ott'>
186
- <img src='https://github.com/max-ott.png' width='140px;'>
184
+ <td id='stefan-natchev'>
185
+ <a href='https://github.com/snatchev'>
186
+ <img src='https://github.com/snatchev.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
189
189
  </td>
190
- <td id='andrew-mcburney'>
191
- <a href='https://github.com/armcburney'>
192
- <img src='https://github.com/armcburney.png' width='140px;'>
190
+ <td id='felix-krause'>
191
+ <a href='https://github.com/KrauseFx'>
192
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='jérôme-lacoste'>
199
- <a href='https://github.com/lacostej'>
200
- <img src='https://github.com/lacostej.png' width='140px;'>
198
+ <td id='maksym-grebenets'>
199
+ <a href='https://github.com/mgrebenets'>
200
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -179,7 +179,7 @@ module Deliver
179
179
  package_path: "/tmp",
180
180
  platform: platform
181
181
  )
182
- result = transporter.verify(package_path: package_path)
182
+ result = transporter.verify(package_path: package_path, asset_path: ipa_path, platform: platform)
183
183
  when "osx"
184
184
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
185
185
  app_id: Deliver.cache[:app].id,
@@ -187,7 +187,7 @@ module Deliver
187
187
  package_path: "/tmp",
188
188
  platform: platform
189
189
  )
190
- result = transporter.verify(package_path: package_path)
190
+ result = transporter.verify(package_path: package_path, asset_path: pkg_path, platform: platform)
191
191
  else
192
192
  UI.user_error!("No suitable file found for verify for platform: #{options[:platform]}")
193
193
  end
@@ -206,7 +206,7 @@ module Deliver
206
206
  pkg_path = options[:pkg]
207
207
 
208
208
  platform = options[:platform]
209
- transporter = transporter_for_selected_team(upload: true)
209
+ transporter = transporter_for_selected_team
210
210
 
211
211
  case platform
212
212
  when "ios", "appletvos"
@@ -266,7 +266,7 @@ module Deliver
266
266
  # If itc_provider was explicitly specified, use it.
267
267
  # If there are multiple teams, infer the provider from the selected team name.
268
268
  # If there are fewer than two teams, don't infer the provider.
269
- def transporter_for_selected_team(upload: false)
269
+ def transporter_for_selected_team
270
270
  # Use JWT auth
271
271
  api_token = Spaceship::ConnectAPI.token
272
272
  api_key = if options[:api_key].nil? && !api_token.nil?
@@ -281,12 +281,12 @@ module Deliver
281
281
 
282
282
  unless api_token.nil?
283
283
  api_token.refresh! if api_token.expired?
284
- return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text, upload: upload, api_key: api_key)
284
+ return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text, altool_compatible_command: true, api_key: api_key)
285
285
  end
286
286
 
287
287
  tunes_client = Spaceship::ConnectAPI.client.tunes_client
288
288
 
289
- generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider], upload: upload, api_key: api_key)
289
+ generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider], altool_compatible_command: true, api_key: api_key)
290
290
  return generic_transporter unless options[:itc_provider].nil? && tunes_client.teams.count > 1
291
291
 
292
292
  begin
@@ -294,7 +294,7 @@ module Deliver
294
294
  name = team['name']
295
295
  provider_id = generic_transporter.provider_ids[name]
296
296
  UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
297
- return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id, upload: upload, api_key: api_key)
297
+ return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id, altool_compatible_command: true, api_key: api_key)
298
298
  rescue => ex
299
299
  UI.verbose("Couldn't infer a provider short name for team with id #{tunes_client.team_id} automatically: #{ex}. Proceeding without provider short name.")
300
300
  return generic_transporter
@@ -7,11 +7,35 @@ module Fastlane
7
7
  # Raises an exception and stop the lane execution if the repo is not in a clean state
8
8
  class EnsureGitStatusCleanAction < Action
9
9
  def self.run(params)
10
+ # Build command
10
11
  if params[:ignored]
11
- ignored_file = params[:ignored]
12
- repo_status = Actions.sh("git status --porcelain --ignored #{ignored_file}")
12
+ ignored_mode = params[:ignored]
13
+ ignored_mode = 'no' if ignored_mode == 'none'
14
+ command = "git status --porcelain --ignored='#{ignored_mode}'"
13
15
  else
14
- repo_status = Actions.sh("git status --porcelain")
16
+ command = "git status --porcelain"
17
+ end
18
+
19
+ # Don't log if manually ignoring files as it will emulate output later
20
+ print_output = params[:ignore_files].nil?
21
+ repo_status = Actions.sh(command, log: print_output)
22
+
23
+ # Manual post processing trying to ignore certain file paths
24
+ if (ignore_files = params[:ignore_files])
25
+ repo_status = repo_status.lines.reject do |line|
26
+ path = line.split(' ').last
27
+ was_found = ignore_files.include?(path)
28
+
29
+ UI.message("Ignoring '#{path}'") if was_found
30
+
31
+ was_found
32
+ end.join("")
33
+
34
+ # Emulate the output format of `git status --porcelain`
35
+ UI.command(command)
36
+ repo_status.lines.each do |line|
37
+ UI.message("▸ " + line.chomp.magenta)
38
+ end
15
39
  end
16
40
 
17
41
  repo_clean = repo_status.empty?
@@ -74,8 +98,23 @@ module Fastlane
74
98
  type: Boolean),
75
99
  FastlaneCore::ConfigItem.new(key: :ignored,
76
100
  env_name: "FL_ENSURE_GIT_STATUS_CLEAN_IGNORED_FILE",
77
- description: "The flag whether to ignore file the git status if the repo is dirty",
78
- optional: true)
101
+ description: [
102
+ "The handling mode of the ignored files. The available options are: `'traditional'`, `'none'` (default) and `'matching'`.",
103
+ "Specifying `'none'` to this parameter is the same as not specifying the parameter at all, which means that no ignored file will be used to check if the repo is dirty or not.",
104
+ "Specifying `'traditional'` or `'matching'` causes some ignored files to be used to check if the repo is dirty or not (more info in the official docs: https://git-scm.com/docs/git-status#Documentation/git-status.txt---ignoredltmodegt)"
105
+ ].join(" "),
106
+ optional: true,
107
+ verify_block: proc do |value|
108
+ mode = value.to_s
109
+ modes = %w(traditional none matching)
110
+
111
+ UI.user_error!("Unsupported mode, must be: #{modes}") unless modes.include?(mode)
112
+ end),
113
+ FastlaneCore::ConfigItem.new(key: :ignore_files,
114
+ env_name: "FL_ENSURE_GIT_STATUS_CLEAN_IGNORE_FILES",
115
+ description: "Array of files to ignore",
116
+ optional: true,
117
+ type: Array)
79
118
  ]
80
119
  end
81
120
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.212.1'.freeze
2
+ VERSION = '2.213.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.212.1
20
+ // Generated with fastlane 2.213.0
@@ -264,4 +264,4 @@ public extension DeliverfileProtocol {
264
264
 
265
265
  // Please don't remove the lines below
266
266
  // They are used to detect outdated files
267
- // FastlaneRunnerAPIVersion [0.9.114]
267
+ // FastlaneRunnerAPIVersion [0.9.116]
@@ -4299,7 +4299,8 @@ public func ensureGitBranch(branch: String = "master") {
4299
4299
  - parameters:
4300
4300
  - showUncommittedChanges: The flag whether to show uncommitted changes if the repo is dirty
4301
4301
  - showDiff: The flag whether to show the git diff if the repo is dirty
4302
- - ignored: The flag whether to ignore file the git status if the repo is dirty
4302
+ - ignored: The handling mode of the ignored files. The available options are: `'traditional'`, `'none'` (default) and `'matching'`. Specifying `'none'` to this parameter is the same as not specifying the parameter at all, which means that no ignored file will be used to check if the repo is dirty or not. Specifying `'traditional'` or `'matching'` causes some ignored files to be used to check if the repo is dirty or not (more info in the official docs: https://git-scm.com/docs/git-status#Documentation/git-status.txt---ignoredltmodegt)
4303
+ - ignoreFiles: Array of files to ignore
4303
4304
 
4304
4305
  A sanity check to make sure you are working in a repo that is clean.
4305
4306
  Especially useful to put at the beginning of your Fastfile in the `before_all` block, if some of your other actions will touch your filesystem, do things to your git repo, or just as a general reminder to save your work.
@@ -4307,14 +4308,17 @@ public func ensureGitBranch(branch: String = "master") {
4307
4308
  */
4308
4309
  public func ensureGitStatusClean(showUncommittedChanges: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4309
4310
  showDiff: OptionalConfigValue<Bool> = .fastlaneDefault(false),
4310
- ignored: OptionalConfigValue<String?> = .fastlaneDefault(nil))
4311
+ ignored: OptionalConfigValue<String?> = .fastlaneDefault(nil),
4312
+ ignoreFiles: OptionalConfigValue<[String]?> = .fastlaneDefault(nil))
4311
4313
  {
4312
4314
  let showUncommittedChangesArg = showUncommittedChanges.asRubyArgument(name: "show_uncommitted_changes", type: nil)
4313
4315
  let showDiffArg = showDiff.asRubyArgument(name: "show_diff", type: nil)
4314
4316
  let ignoredArg = ignored.asRubyArgument(name: "ignored", type: nil)
4317
+ let ignoreFilesArg = ignoreFiles.asRubyArgument(name: "ignore_files", type: nil)
4315
4318
  let array: [RubyCommand.Argument?] = [showUncommittedChangesArg,
4316
4319
  showDiffArg,
4317
- ignoredArg]
4320
+ ignoredArg,
4321
+ ignoreFilesArg]
4318
4322
  let args: [RubyCommand.Argument] = array
4319
4323
  .filter { $0?.value != nil }
4320
4324
  .compactMap { $0 }
@@ -6676,6 +6680,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6676
6680
  - s3Bucket: Name of the S3 bucket
6677
6681
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6678
6682
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6683
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6679
6684
  - keychainName: Keychain the items should be imported to
6680
6685
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
6681
6686
  - force: Renew the provisioning profiles every time you run match
@@ -6729,6 +6734,7 @@ public func match(type: String = matchfile.type,
6729
6734
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
6730
6735
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
6731
6736
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
6737
+ gitlabHost: String = matchfile.gitlabHost,
6732
6738
  keychainName: String = matchfile.keychainName,
6733
6739
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.keychainPassword),
6734
6740
  force: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.force),
@@ -6780,6 +6786,7 @@ public func match(type: String = matchfile.type,
6780
6786
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
6781
6787
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
6782
6788
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
6789
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
6783
6790
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
6784
6791
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
6785
6792
  let forceArg = force.asRubyArgument(name: "force", type: nil)
@@ -6830,6 +6837,7 @@ public func match(type: String = matchfile.type,
6830
6837
  s3BucketArg,
6831
6838
  s3ObjectPrefixArg,
6832
6839
  gitlabProjectArg,
6840
+ gitlabHostArg,
6833
6841
  keychainNameArg,
6834
6842
  keychainPasswordArg,
6835
6843
  forceArg,
@@ -6891,6 +6899,7 @@ public func match(type: String = matchfile.type,
6891
6899
  - s3Bucket: Name of the S3 bucket
6892
6900
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
6893
6901
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
6902
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
6894
6903
  - keychainName: Keychain the items should be imported to
6895
6904
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
6896
6905
  - force: Renew the provisioning profiles every time you run match
@@ -6948,6 +6957,7 @@ public func matchNuke(type: String = "development",
6948
6957
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6949
6958
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6950
6959
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6960
+ gitlabHost: String = "https://gitlab.com",
6951
6961
  keychainName: String = "login.keychain",
6952
6962
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6953
6963
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -6999,6 +7009,7 @@ public func matchNuke(type: String = "development",
6999
7009
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
7000
7010
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
7001
7011
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
7012
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
7002
7013
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
7003
7014
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
7004
7015
  let forceArg = force.asRubyArgument(name: "force", type: nil)
@@ -7049,6 +7060,7 @@ public func matchNuke(type: String = "development",
7049
7060
  s3BucketArg,
7050
7061
  s3ObjectPrefixArg,
7051
7062
  gitlabProjectArg,
7063
+ gitlabHostArg,
7052
7064
  keychainNameArg,
7053
7065
  keychainPasswordArg,
7054
7066
  forceArg,
@@ -8704,6 +8716,7 @@ public func rubyVersion() {
8704
8716
  - slackOnlyOnFailure: Only post on Slack if the tests fail
8705
8717
  - slackDefaultPayloads: Specifies default payloads to include in Slack messages. For more info visit https://docs.fastlane.tools/actions/slack
8706
8718
  - destination: Use only if you're a pro, use the other options instead
8719
+ - runRosettaSimulator: Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode
8707
8720
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
8708
8721
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
8709
8722
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
@@ -8786,6 +8799,7 @@ public func rubyVersion() {
8786
8799
  slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8787
8800
  slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8788
8801
  destination: Any? = nil,
8802
+ runRosettaSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8789
8803
  catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8790
8804
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8791
8805
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
@@ -8864,6 +8878,7 @@ public func rubyVersion() {
8864
8878
  let slackOnlyOnFailureArg = slackOnlyOnFailure.asRubyArgument(name: "slack_only_on_failure", type: nil)
8865
8879
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
8866
8880
  let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
8881
+ let runRosettaSimulatorArg = runRosettaSimulator.asRubyArgument(name: "run_rosetta_simulator", type: nil)
8867
8882
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
8868
8883
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
8869
8884
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -8941,6 +8956,7 @@ public func rubyVersion() {
8941
8956
  slackOnlyOnFailureArg,
8942
8957
  slackDefaultPayloadsArg,
8943
8958
  destinationArg,
8959
+ runRosettaSimulatorArg,
8944
8960
  catalystPlatformArg,
8945
8961
  customReportFileNameArg,
8946
8962
  xcodebuildCommandArg,
@@ -9131,6 +9147,7 @@ public func say(text: [String],
9131
9147
  - slackOnlyOnFailure: Only post on Slack if the tests fail
9132
9148
  - slackDefaultPayloads: Specifies default payloads to include in Slack messages. For more info visit https://docs.fastlane.tools/actions/slack
9133
9149
  - destination: Use only if you're a pro, use the other options instead
9150
+ - runRosettaSimulator: Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode
9134
9151
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
9135
9152
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
9136
9153
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
@@ -9213,6 +9230,7 @@ public func say(text: [String],
9213
9230
  slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9214
9231
  slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9215
9232
  destination: Any? = scanfile.destination,
9233
+ runRosettaSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.runRosettaSimulator),
9216
9234
  catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9217
9235
  customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9218
9236
  xcodebuildCommand: String = scanfile.xcodebuildCommand,
@@ -9291,6 +9309,7 @@ public func say(text: [String],
9291
9309
  let slackOnlyOnFailureArg = slackOnlyOnFailure.asRubyArgument(name: "slack_only_on_failure", type: nil)
9292
9310
  let slackDefaultPayloadsArg = slackDefaultPayloads.asRubyArgument(name: "slack_default_payloads", type: nil)
9293
9311
  let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
9312
+ let runRosettaSimulatorArg = runRosettaSimulator.asRubyArgument(name: "run_rosetta_simulator", type: nil)
9294
9313
  let catalystPlatformArg = catalystPlatform.asRubyArgument(name: "catalyst_platform", type: nil)
9295
9314
  let customReportFileNameArg = customReportFileName.asRubyArgument(name: "custom_report_file_name", type: nil)
9296
9315
  let xcodebuildCommandArg = RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand, type: nil)
@@ -9368,6 +9387,7 @@ public func say(text: [String],
9368
9387
  slackOnlyOnFailureArg,
9369
9388
  slackDefaultPayloadsArg,
9370
9389
  destinationArg,
9390
+ runRosettaSimulatorArg,
9371
9391
  catalystPlatformArg,
9372
9392
  customReportFileNameArg,
9373
9393
  xcodebuildCommandArg,
@@ -11117,6 +11137,7 @@ public func swiftlint(mode: String = "lint",
11117
11137
  - s3Bucket: Name of the S3 bucket
11118
11138
  - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
11119
11139
  - gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
11140
+ - gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
11120
11141
  - keychainName: Keychain the items should be imported to
11121
11142
  - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
11122
11143
  - force: Renew the provisioning profiles every time you run match
@@ -11170,6 +11191,7 @@ public func syncCodeSigning(type: String = "development",
11170
11191
  s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11171
11192
  s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11172
11193
  gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11194
+ gitlabHost: String = "https://gitlab.com",
11173
11195
  keychainName: String = "login.keychain",
11174
11196
  keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11175
11197
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -11221,6 +11243,7 @@ public func syncCodeSigning(type: String = "development",
11221
11243
  let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
11222
11244
  let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
11223
11245
  let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
11246
+ let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
11224
11247
  let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
11225
11248
  let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
11226
11249
  let forceArg = force.asRubyArgument(name: "force", type: nil)
@@ -11271,6 +11294,7 @@ public func syncCodeSigning(type: String = "development",
11271
11294
  s3BucketArg,
11272
11295
  s3ObjectPrefixArg,
11273
11296
  gitlabProjectArg,
11297
+ gitlabHostArg,
11274
11298
  keychainNameArg,
11275
11299
  keychainPasswordArg,
11276
11300
  forceArg,
@@ -13573,4 +13597,4 @@ public let snapshotfile: Snapshotfile = .init()
13573
13597
 
13574
13598
  // Please don't remove the lines below
13575
13599
  // They are used to detect outdated files
13576
- // FastlaneRunnerAPIVersion [0.9.167]
13600
+ // FastlaneRunnerAPIVersion [0.9.169]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.212.1
20
+ // Generated with fastlane 2.213.0