fastlane 2.231.1 → 2.232.1

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -100
  3. data/bin/fastlane +2 -2
  4. data/fastlane/lib/assets/completions/completion.bash +1 -1
  5. data/fastlane/lib/assets/completions/completion.sh +2 -2
  6. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +19 -14
  7. data/fastlane/lib/fastlane/actions/appium.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/import_certificate.rb +9 -1
  9. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
  10. data/fastlane/lib/fastlane/erb_template_helper.rb +1 -7
  11. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  12. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -1
  13. data/fastlane/lib/fastlane/version.rb +1 -1
  14. data/fastlane/swift/Appfile.swift +12 -4
  15. data/fastlane/swift/ControlCommand.swift +4 -3
  16. data/fastlane/swift/Deliverfile.swift +1 -1
  17. data/fastlane/swift/DeliverfileProtocol.swift +264 -67
  18. data/fastlane/swift/Fastlane.swift +55 -17
  19. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +3 -1
  20. data/fastlane/swift/Gymfile.swift +1 -1
  21. data/fastlane/swift/GymfileProtocol.swift +220 -55
  22. data/fastlane/swift/LaneFileProtocol.swift +6 -4
  23. data/fastlane/swift/Matchfile.swift +1 -1
  24. data/fastlane/swift/MatchfileProtocol.swift +224 -57
  25. data/fastlane/swift/Precheckfile.swift +1 -1
  26. data/fastlane/swift/PrecheckfileProtocol.swift +44 -12
  27. data/fastlane/swift/RubyCommand.swift +5 -6
  28. data/fastlane/swift/Runner.swift +1 -1
  29. data/fastlane/swift/Scanfile.swift +1 -1
  30. data/fastlane/swift/ScanfileProtocol.swift +328 -82
  31. data/fastlane/swift/Screengrabfile.swift +1 -1
  32. data/fastlane/swift/ScreengrabfileProtocol.swift +88 -23
  33. data/fastlane/swift/Snapshotfile.swift +1 -1
  34. data/fastlane/swift/SnapshotfileProtocol.swift +212 -53
  35. data/fastlane/swift/SocketClient.swift +1 -1
  36. data/fastlane_core/lib/fastlane_core/cert_checker.rb +10 -0
  37. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -1
  38. data/fastlane_core/lib/fastlane_core/project.rb +4 -0
  39. data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +1 -0
  40. data/gym/lib/gym/options.rb +6 -1
  41. data/scan/lib/scan/options.rb +6 -1
  42. data/sigh/lib/assets/resign.sh +7 -5
  43. data/snapshot/lib/snapshot/options.rb +8 -1
  44. data/spaceship/lib/spaceship/connect_api/models/build_upload.rb +42 -0
  45. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
  46. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  47. data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -15
  48. data/trainer/lib/trainer/legacy_xcresult.rb +1 -1
  49. data/trainer/lib/trainer/test_parser.rb +1 -1
  50. data/trainer/lib/trainer/xcresult/helper.rb +11 -1
  51. metadata +29 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6b635e29df91cd8d7a4dd00228f656856fee77f9bf9fe47c614f8304883cf05
4
- data.tar.gz: 50721282399328eb7cbf81fb011fd59f1879d2e8b8405a8c9063dcaeb9dd4be4
3
+ metadata.gz: de7ed1e3cc5b0926788444582b0ad55d84d30759939a11afc6cdae212ee08441
4
+ data.tar.gz: f4880b8caa70c20414543d23084033e5f1ee53f7925dc9802875c199c919d6d9
5
5
  SHA512:
6
- metadata.gz: b355237ed70fd6b4587cf9b5323dc4664b8031573aefee81552528382bee1119acf18f5f43981ee8138c0cf08777061e068bf250b1453caeaf50d214235be1c8
7
- data.tar.gz: 4cdd46a94724f6fe182f976f2a4a447f28f82a283c3c48b3690e2edb1f8ad476065d5bf63a630450b36a1332c991706713e1caf502d4914ed9708cc099f446ce
6
+ metadata.gz: 92deb95868c52a31899edae8ff0670839dc1b4c925cdd3f2ceefc4f97dedc035b984c7449ac1c66977a819e14b77edb4824a3c52bcd85bfb1e21fed8dfa2162b
7
+ data.tar.gz: 3d0327d98668d64fa15f62b29d3294eef94dd1786b241554ed19f7624a8bb645692dd12072233cee69f4881ec49a3a51d932ebd5379513024381976dab8dc4b1
data/README.md CHANGED
@@ -41,93 +41,93 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
41
41
  </a>
42
42
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
43
43
  </td>
44
- <td id='danielle-tomlinson'>
45
- <a href='https://github.com/endocrimes'>
46
- <img src='https://github.com/endocrimes.png' width='140px;'>
44
+ <td id='satoshi-namai'>
45
+ <a href='https://github.com/ainame'>
46
+ <img src='https://github.com/ainame.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
49
49
  </td>
50
- <td id='maksym-grebenets'>
51
- <a href='https://github.com/mgrebenets'>
52
- <img src='https://github.com/mgrebenets.png' width='140px;'>
50
+ <td id='stefan-natchev'>
51
+ <a href='https://github.com/snatchev'>
52
+ <img src='https://github.com/snatchev.png' width='140px;'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
55
55
  </td>
56
- <td id='olivier-halligon'>
57
- <a href='https://github.com/AliSoftware'>
58
- <img src='https://github.com/AliSoftware.png' width='140px;'>
56
+ <td id='joshua-liebowitz'>
57
+ <a href='https://github.com/taquitos'>
58
+ <img src='https://github.com/taquitos.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
61
61
  </td>
62
- <td id='manish-rathi'>
63
- <a href='https://github.com/crazymanish'>
64
- <img src='https://github.com/crazymanish.png' width='140px;'>
62
+ <td id='max-ott'>
63
+ <a href='https://github.com/max-ott'>
64
+ <img src='https://github.com/max-ott.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='stefan-natchev'>
71
- <a href='https://github.com/snatchev'>
72
- <img src='https://github.com/snatchev.png' width='140px;'>
70
+ <td id='josh-holtz'>
71
+ <a href='https://github.com/joshdholtz'>
72
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
75
75
  </td>
76
- <td id='matthew-ellis'>
77
- <a href='https://github.com/matthewellis'>
78
- <img src='https://github.com/matthewellis.png' width='140px;'>
76
+ <td id='jan-piotrowski'>
77
+ <a href='https://github.com/janpio'>
78
+ <img src='https://github.com/janpio.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
81
81
  </td>
82
- <td id='jorge-revuelta-h'>
83
- <a href='https://github.com/minuscorp'>
84
- <img src='https://github.com/minuscorp.png' width='140px;'>
82
+ <td id='helmut-januschka'>
83
+ <a href='https://github.com/hjanuschka'>
84
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
87
87
  </td>
88
- <td id='łukasz-grabowski'>
89
- <a href='https://github.com/lucgrabowski'>
90
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
88
+ <td id='manish-rathi'>
89
+ <a href='https://github.com/crazymanish'>
90
+ <img src='https://github.com/crazymanish.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'>Łukasz Grabowski</h4>
92
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
93
93
  </td>
94
- <td id='roger-oba'>
95
- <a href='https://github.com/rogerluan'>
96
- <img src='https://github.com/rogerluan.png' width='140px;'>
94
+ <td id='maksym-grebenets'>
95
+ <a href='https://github.com/mgrebenets'>
96
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
97
97
  </a>
98
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
- <td id='joshua-liebowitz'>
103
- <a href='https://github.com/taquitos'>
104
- <img src='https://github.com/taquitos.png' width='140px;'>
102
+ <td id='luka-mirosevic'>
103
+ <a href='https://github.com/lmirosevic'>
104
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
105
105
  </a>
106
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
107
107
  </td>
108
- <td id='fumiya-nakamura'>
109
- <a href='https://github.com/nafu'>
110
- <img src='https://github.com/nafu.png' width='140px;'>
108
+ <td id='felix-krause'>
109
+ <a href='https://github.com/KrauseFx'>
110
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
113
113
  </td>
114
- <td id='jimmy-dee'>
115
- <a href='https://github.com/jdee'>
116
- <img src='https://github.com/jdee.png' width='140px;'>
114
+ <td id='manu-wallner'>
115
+ <a href='https://github.com/milch'>
116
+ <img src='https://github.com/milch.png' width='140px;'>
117
117
  </a>
118
- <h4 align='center'>Jimmy Dee</h4>
118
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
119
119
  </td>
120
- <td id='satoshi-namai'>
121
- <a href='https://github.com/ainame'>
122
- <img src='https://github.com/ainame.png' width='140px;'>
120
+ <td id='iulian-onofrei'>
121
+ <a href='https://github.com/revolter'>
122
+ <img src='https://github.com/revolter.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
125
125
  </td>
126
- <td id='jérôme-lacoste'>
127
- <a href='https://github.com/lacostej'>
128
- <img src='https://github.com/lacostej.png' width='140px;'>
126
+ <td id='jimmy-dee'>
127
+ <a href='https://github.com/jdee'>
128
+ <img src='https://github.com/jdee.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
130
+ <h4 align='center'>Jimmy Dee</h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
@@ -137,75 +137,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
137
137
  </a>
138
138
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
139
139
  </td>
140
- <td id='jan-piotrowski'>
141
- <a href='https://github.com/janpio'>
142
- <img src='https://github.com/janpio.png' width='140px;'>
140
+ <td id='connor-tumbleson'>
141
+ <a href='https://github.com/ibotpeaches'>
142
+ <img src='https://github.com/ibotpeaches.png' width='140px;'>
143
143
  </a>
144
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
145
145
  </td>
146
- <td id='iulian-onofrei'>
147
- <a href='https://github.com/revolter'>
148
- <img src='https://github.com/revolter.png' width='140px;'>
146
+ <td id='jérôme-lacoste'>
147
+ <a href='https://github.com/lacostej'>
148
+ <img src='https://github.com/lacostej.png' width='140px;'>
149
149
  </a>
150
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
151
151
  </td>
152
- <td id='felix-krause'>
153
- <a href='https://github.com/KrauseFx'>
154
- <img src='https://github.com/KrauseFx.png' width='140px;'>
152
+ <td id='matthew-ellis'>
153
+ <a href='https://github.com/matthewellis'>
154
+ <img src='https://github.com/matthewellis.png' width='140px;'>
155
155
  </a>
156
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
157
157
  </td>
158
- <td id='daniel-jankowski'>
159
- <a href='https://github.com/mollyIV'>
160
- <img src='https://github.com/mollyIV.png' width='140px;'>
158
+ <td id='olivier-halligon'>
159
+ <a href='https://github.com/AliSoftware'>
160
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
161
161
  </a>
162
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='luka-mirosevic'>
167
- <a href='https://github.com/lmirosevic'>
168
- <img src='https://github.com/lmirosevic.png' width='140px;'>
166
+ <td id='jorge-revuelta-h'>
167
+ <a href='https://github.com/minuscorp'>
168
+ <img src='https://github.com/minuscorp.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
171
171
  </td>
172
- <td id='connor-tumbleson'>
173
- <a href='https://github.com/ibotpeaches'>
174
- <img src='https://github.com/ibotpeaches.png' width='140px;'>
172
+ <td id='roger-oba'>
173
+ <a href='https://github.com/rogerluan'>
174
+ <img src='https://github.com/rogerluan.png' width='140px;'>
175
175
  </a>
176
- <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
177
177
  </td>
178
- <td id='kohki-miki'>
179
- <a href='https://github.com/giginet'>
180
- <img src='https://github.com/giginet.png' width='140px;'>
178
+ <td id='łukasz-grabowski'>
179
+ <a href='https://github.com/lucgrabowski'>
180
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
182
+ <h4 align='center'>Łukasz Grabowski</h4>
183
183
  </td>
184
- <td id='josh-holtz'>
185
- <a href='https://github.com/joshdholtz'>
186
- <img src='https://github.com/joshdholtz.png' width='140px;'>
184
+ <td id='danielle-tomlinson'>
185
+ <a href='https://github.com/endocrimes'>
186
+ <img src='https://github.com/endocrimes.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
189
189
  </td>
190
- <td id='manu-wallner'>
191
- <a href='https://github.com/milch'>
192
- <img src='https://github.com/milch.png' width='140px;'>
190
+ <td id='fumiya-nakamura'>
191
+ <a href='https://github.com/nafu'>
192
+ <img src='https://github.com/nafu.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='max-ott'>
199
- <a href='https://github.com/max-ott'>
200
- <img src='https://github.com/max-ott.png' width='140px;'>
198
+ <td id='kohki-miki'>
199
+ <a href='https://github.com/giginet'>
200
+ <img src='https://github.com/giginet.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
203
203
  </td>
204
- <td id='helmut-januschka'>
205
- <a href='https://github.com/hjanuschka'>
206
- <img src='https://github.com/hjanuschka.png' width='140px;'>
204
+ <td id='daniel-jankowski'>
205
+ <a href='https://github.com/mollyIV'>
206
+ <img src='https://github.com/mollyIV.png' width='140px;'>
207
207
  </a>
208
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
208
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
209
209
  </td>
210
210
  </table>
211
211
 
data/bin/fastlane CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if RUBY_VERSION < '2.0.0'
4
- abort("fastlane requires Ruby 2.0.0 or higher")
3
+ if RUBY_VERSION < '2.7.0'
4
+ abort("fastlane requires Ruby 2.7.0 or higher")
5
5
  end
6
6
 
7
7
  def self.windows?
@@ -21,6 +21,6 @@ _fastlane_complete() {
21
21
  completions="$(sed -En 's/^[ ]*lane +:([^ ]+).*$/\1/p' "$file")"
22
22
  completions="$completions update_fastlane"
23
23
 
24
- COMPREPLY=( $(compgen -W "$completions" -- "$word") )
24
+ mapfile -t COMPREPLY < <(compgen -W "$completions" -- "$word")
25
25
  }
26
26
 
@@ -4,9 +4,9 @@
4
4
  # shellcheck disable=SC2039
5
5
 
6
6
  if [ -n "$BASH_VERSION" ]; then
7
- source ~/.fastlane/completions/completion.bash
7
+ . ~/.fastlane/completions/completion.bash
8
8
  elif [ -n "$ZSH_VERSION" ]; then
9
- source ~/.fastlane/completions/completion.zsh
9
+ . ~/.fastlane/completions/completion.zsh
10
10
  fi
11
11
 
12
12
  # Do not remove v0.0.1
@@ -66,17 +66,21 @@ module Fastlane
66
66
  version_number = params[:version]
67
67
  platform = params[:platform]
68
68
 
69
- # Create filter for get_builds with optional version number
70
- filter = { app: app.id }
69
+ # Create filter for get_build_uploads to exclude builds in AWAITING_UPLOAD state
70
+ # AWAITING_UPLOAD builds have no uploadedDate, which would break the sort order
71
+ filter = { state: "PROCESSING,FAILED,COMPLETE" }
72
+
73
+ # Append optional version number filter
71
74
  if version_number
72
- filter["preReleaseVersion.version"] = version_number
75
+ filter["cfBundleShortVersionString"] = version_number
73
76
  version_number_message = "version #{version_number}"
74
77
  else
75
78
  version_number_message = "any version"
76
79
  end
77
80
 
81
+ # Append optional platform filter
78
82
  if platform
79
- filter["preReleaseVersion.platform"] = Spaceship::ConnectAPI::Platform.map(platform)
83
+ filter["platform"] = Spaceship::ConnectAPI::Platform.map(platform)
80
84
  platform_message = "#{platform} platform"
81
85
  else
82
86
  platform_message = "any platform"
@@ -84,19 +88,20 @@ module Fastlane
84
88
 
85
89
  UI.message("Fetching the latest build number for #{version_number_message}")
86
90
 
87
- # Get latest build for optional version number and return build number if found
88
- build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion", limit: 1).first
89
- if build
90
- build_nr = build.version
91
- UI.message("Latest upload for version #{build.app_version} on #{platform_message} is build: #{build_nr}")
92
- return OpenStruct.new({ build_nr: build_nr, build_v: build.app_version })
91
+ # Get latest build upload for optional version number and return build number if found
92
+ build_upload = Spaceship::ConnectAPI.get_build_uploads(app_id: app.id, filter: filter, sort: "-uploadedDate", limit: 1).first
93
+ if build_upload
94
+ build_nr = build_upload.cf_build_version
95
+ build_v = build_upload.cf_build_short_version_string
96
+ UI.message("Latest upload for version #{build_v} on #{platform_message} is build: #{build_nr}")
97
+ return OpenStruct.new({ build_nr: build_nr, build_v: build_v })
93
98
  end
94
99
 
95
- # Let user know that build couldn't be found
96
- UI.important("Could not find a build for #{version_number_message} on #{platform_message} on App Store Connect")
100
+ # Let user know that build upload couldn't be found
101
+ UI.important("Could not find a build upload for #{version_number_message} on #{platform_message} on App Store Connect")
97
102
 
98
103
  if params[:initial_build_number].nil?
99
- UI.user_error!("Could not find a build on App Store Connect - and 'initial_build_number' option is not set")
104
+ UI.user_error!("Could not find a build upload on App Store Connect - and 'initial_build_number' option is not set")
100
105
  else
101
106
  build_nr = params[:initial_build_number]
102
107
  UI.message("Using initial build number of #{build_nr}")
@@ -140,7 +145,7 @@ module Fastlane
140
145
  conflicting_options: [:api_key_path]),
141
146
  FastlaneCore::ConfigItem.new(key: :initial_build_number,
142
147
  env_name: "INITIAL_BUILD_NUMBER",
143
- description: "sets the build number to given value if no build is in current train",
148
+ description: "sets the build number to given value if no build (upload) is in current train",
144
149
  skip_type_validation: true), # as we also allow integers, which we convert to strings anyway
145
150
  FastlaneCore::ConfigItem.new(key: :app_identifier,
146
151
  short_option: "-a",
@@ -90,7 +90,7 @@ module Fastlane
90
90
  port: params[:port],
91
91
  appium_lib: appium_lib
92
92
  ).start_driver
93
- Appium.promote_appium_methods(RSpec::Core::ExampleGroup)
93
+ Appium.promote_appium_methods(RSpec::Core::ExampleGroup, @driver)
94
94
  end
95
95
 
96
96
  c.after(:each) do
@@ -6,7 +6,7 @@ module Fastlane
6
6
  def self.run(params)
7
7
  keychain_path = params[:keychain_path] || FastlaneCore::Helper.keychain_path(params[:keychain_name])
8
8
 
9
- FastlaneCore::KeychainImporter.import_file(params[:certificate_path], keychain_path, keychain_password: params[:keychain_password], certificate_password: params[:certificate_password], output: params[:log_output])
9
+ FastlaneCore::KeychainImporter.import_file(params[:certificate_path], keychain_path, keychain_password: params[:keychain_password], certificate_password: params[:certificate_password], certificate_format: params[:certificate_format], output: params[:log_output])
10
10
  end
11
11
 
12
12
  def self.description
@@ -23,6 +23,9 @@ module Fastlane
23
23
  sensitive: true,
24
24
  default_value: "",
25
25
  optional: true),
26
+ FastlaneCore::ConfigItem.new(key: :certificate_format,
27
+ description: "Format of the certificate. Check the '-f' switch from 'security import --help' command",
28
+ optional: true),
26
29
  FastlaneCore::ConfigItem.new(key: :keychain_name,
27
30
  env_name: "KEYCHAIN_NAME",
28
31
  description: "Keychain the items should be imported to",
@@ -65,6 +68,11 @@ module Fastlane
65
68
  )',
66
69
  'import_certificate(
67
70
  certificate_path: "certs/development.cer"
71
+ )',
72
+ 'import_certificate(
73
+ certificate_path: "certs/dist.p12",
74
+ certificate_password: ENV["CERTIFICATE_PASSWORD"] || "default",
75
+ certificate_format: "pkcs12"
68
76
  )'
69
77
  ]
70
78
  end
@@ -87,7 +87,7 @@ module Fastlane
87
87
  end),
88
88
  FastlaneCore::ConfigItem.new(key: :initial_build_number,
89
89
  env_name: "INITIAL_BUILD_NUMBER",
90
- description: "sets the build number to given value if no build is in current train",
90
+ description: "sets the build number to given value if no build (upload) is in current train",
91
91
  default_value: 1,
92
92
  skip_type_validation: true), # allow Integer, String
93
93
  FastlaneCore::ConfigItem.new(key: :team_id,
@@ -26,13 +26,7 @@ module Fastlane
26
26
  end
27
27
 
28
28
  def render(template)
29
- # From Ruby 2.6, ERB.new takes keyword arguments and positional ones are deprecated
30
- # https://bugs.ruby-lang.org/issues/14256
31
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
32
- ERB.new(template, trim_mode: @trim_mode).result(binding)
33
- else
34
- ERB.new(template, nil, @trim_mode).result(binding)
35
- end
29
+ ERB.new(template, trim_mode: @trim_mode).result(binding)
36
30
  end
37
31
  end
38
32
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.files = Dir["lib/**/*"] + %w(README.md LICENSE)
16
16
  spec.require_paths = ['lib']
17
17
  spec.metadata['rubygems_mfa_required'] = 'true'
18
- spec.required_ruby_version = '>= 2.6'
18
+ spec.required_ruby_version = '>= 2.7'
19
19
 
20
20
  # Don't add a dependency to fastlane or fastlane_re
21
21
  # since this would cause a circular dependency
@@ -3,7 +3,7 @@ require:
3
3
  - rubocop/require_tools
4
4
  - rubocop-performance
5
5
  AllCops:
6
- TargetRubyVersion: 2.6
6
+ TargetRubyVersion: 2.7
7
7
  NewCops: enable
8
8
  Include:
9
9
  - "**/*.rb"
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.231.1'.freeze
2
+ VERSION = '2.232.1'.freeze
3
3
  SUMMARY = "The easiest way to build and release mobile apps.".freeze
4
4
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
5
5
  MINIMUM_XCODE_RELEASE = "7.0".freeze
@@ -1,11 +1,19 @@
1
1
  // Appfile.swift
2
2
  // Copyright (c) 2026 FastlaneTools
3
3
 
4
- var appIdentifier: String { return "" } // The bundle identifier of your app
5
- var appleID: String { return "" } // Your Apple Developer Portal username
4
+ var appIdentifier: String {
5
+ return ""
6
+ } // The bundle identifier of your app
7
+ var appleID: String {
8
+ return ""
9
+ } // Your Apple Developer Portal username
6
10
 
7
- var teamID: String { return "" } // Developer Portal Team ID
8
- var itcTeam: String? { return nil } // App Store Connect Team ID (may be nil if no team)
11
+ var teamID: String {
12
+ return ""
13
+ } // Developer Portal Team ID
14
+ var itcTeam: String? {
15
+ return nil
16
+ } // App Store Connect Team ID (may be nil if no team)
9
17
 
10
18
  // you can even provide different app identifiers, Apple IDs and team names per lane:
11
19
  // More information: https://docs.fastlane.tools/advanced/#appfile
@@ -12,7 +12,9 @@ import Foundation
12
12
 
13
13
  struct ControlCommand: RubyCommandable {
14
14
  static let commandKey = "command"
15
- var type: CommandType { return .control }
15
+ var type: CommandType {
16
+ return .control
17
+ }
16
18
 
17
19
  enum ShutdownCommandType {
18
20
  static let userMessageKey: String = "userMessage"
@@ -59,8 +61,7 @@ struct ControlCommand: RubyCommandable {
59
61
  }
60
62
 
61
63
  let jsonData = try! JSONSerialization.data(withJSONObject: jsonDictionary, options: [])
62
- let jsonString = String(data: jsonData, encoding: .utf8)!
63
- return jsonString
64
+ return String(data: jsonData, encoding: .utf8)!
64
65
  }
65
66
 
66
67
  init(commandType: ShutdownCommandType, message: String? = nil) {
@@ -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.231.1
20
+ // Generated with fastlane 2.232.1