fastlane 2.231.1 → 2.232.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +98 -98
  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 +15 -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 +28 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6b635e29df91cd8d7a4dd00228f656856fee77f9bf9fe47c614f8304883cf05
4
- data.tar.gz: 50721282399328eb7cbf81fb011fd59f1879d2e8b8405a8c9063dcaeb9dd4be4
3
+ metadata.gz: 2622d3578122878982a9b7d811fe4a292ed99929665c6260ad5f16dc687394ef
4
+ data.tar.gz: 6b0ea9b956f1aa5e1cadad14947045227e23d7dfe06d878b570ba70a6cf5f8ff
5
5
  SHA512:
6
- metadata.gz: b355237ed70fd6b4587cf9b5323dc4664b8031573aefee81552528382bee1119acf18f5f43981ee8138c0cf08777061e068bf250b1453caeaf50d214235be1c8
7
- data.tar.gz: 4cdd46a94724f6fe182f976f2a4a447f28f82a283c3c48b3690e2edb1f8ad476065d5bf63a630450b36a1332c991706713e1caf502d4914ed9708cc099f446ce
6
+ metadata.gz: 660e9e37dbf36f1894fbc6a813c794b12e3201428812777d2a287b9cf22911ea6b0fc8c004da7050c1ba1ebb4922b1006f7fdb39bda8b41548f38dd2320c3a3f
7
+ data.tar.gz: bf7c1b8f65cbb1faba9242d21e37c595ae2f3e3651db49b9e8af32a8360a993d60783a947681bb0fa5ed13069aa3337354c136bf70d63c96c854ffa15d11f050
data/README.md CHANGED
@@ -35,43 +35,49 @@ 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='andrew-mcburney'>
39
- <a href='https://github.com/armcburney'>
40
- <img src='https://github.com/armcburney.png' width='140px;'>
38
+ <td id='jan-piotrowski'>
39
+ <a href='https://github.com/janpio'>
40
+ <img src='https://github.com/janpio.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</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='kohki-miki'>
45
+ <a href='https://github.com/giginet'>
46
+ <img src='https://github.com/giginet.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/giginet'>Kohki Miki</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='felix-krause'>
51
+ <a href='https://github.com/KrauseFx'>
52
+ <img src='https://github.com/KrauseFx.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/KrauseFx'>Felix Krause</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='helmut-januschka'>
57
+ <a href='https://github.com/hjanuschka'>
58
+ <img src='https://github.com/hjanuschka.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/hjanuschka'>Helmut Januschka</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='josh-holtz'>
63
+ <a href='https://github.com/joshdholtz'>
64
+ <img src='https://github.com/joshdholtz.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/joshdholtz'>Josh Holtz</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='daniel-jankowski'>
71
+ <a href='https://github.com/mollyIV'>
72
+ <img src='https://github.com/mollyIV.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/mollyIV'>Daniel Jankowski</a></h4>
75
+ </td>
76
+ <td id='jimmy-dee'>
77
+ <a href='https://github.com/jdee'>
78
+ <img src='https://github.com/jdee.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'>Jimmy Dee</h4>
75
81
  </td>
76
82
  <td id='matthew-ellis'>
77
83
  <a href='https://github.com/matthewellis'>
@@ -79,31 +85,37 @@ 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/mellis1995'>Matthew Ellis</a></h4>
81
87
  </td>
82
- <td id='jorge-revuelta-h'>
83
- <a href='https://github.com/minuscorp'>
84
- <img src='https://github.com/minuscorp.png' width='140px;'>
85
- </a>
86
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
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='maksym-grebenets'>
89
+ <a href='https://github.com/mgrebenets'>
90
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'>Łukasz Grabowski</h4>
92
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</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='olivier-halligon'>
95
+ <a href='https://github.com/AliSoftware'>
96
+ <img src='https://github.com/AliSoftware.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/aligatr'>Olivier Halligon</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='andrew-mcburney'>
103
+ <a href='https://github.com/armcburney'>
104
+ <img src='https://github.com/armcburney.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/armcburney'>Andrew McBurney</a></h4>
107
+ </td>
108
+ <td id='manish-rathi'>
109
+ <a href='https://github.com/crazymanish'>
110
+ <img src='https://github.com/crazymanish.png' width='140px;'>
111
+ </a>
112
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
113
+ </td>
114
+ <td id='danielle-tomlinson'>
115
+ <a href='https://github.com/endocrimes'>
116
+ <img src='https://github.com/endocrimes.png' width='140px;'>
117
+ </a>
118
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
107
119
  </td>
108
120
  <td id='fumiya-nakamura'>
109
121
  <a href='https://github.com/nafu'>
@@ -111,58 +123,64 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
111
123
  </a>
112
124
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
113
125
  </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='satoshi-namai'>
121
- <a href='https://github.com/ainame'>
122
- <img src='https://github.com/ainame.png' width='140px;'>
126
+ <td id='iulian-onofrei'>
127
+ <a href='https://github.com/revolter'>
128
+ <img src='https://github.com/revolter.png' width='140px;'>
123
129
  </a>
124
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
125
131
  </td>
132
+ </tr>
133
+ <tr>
126
134
  <td id='jérôme-lacoste'>
127
135
  <a href='https://github.com/lacostej'>
128
136
  <img src='https://github.com/lacostej.png' width='140px;'>
129
137
  </a>
130
138
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
131
139
  </td>
132
- </tr>
133
- <tr>
140
+ <td id='łukasz-grabowski'>
141
+ <a href='https://github.com/lucgrabowski'>
142
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
143
+ </a>
144
+ <h4 align='center'>Łukasz Grabowski</h4>
145
+ </td>
134
146
  <td id='aaron-brager'>
135
147
  <a href='https://github.com/getaaron'>
136
148
  <img src='https://github.com/getaaron.png' width='140px;'>
137
149
  </a>
138
150
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
139
151
  </td>
140
- <td id='jan-piotrowski'>
141
- <a href='https://github.com/janpio'>
142
- <img src='https://github.com/janpio.png' width='140px;'>
152
+ <td id='max-ott'>
153
+ <a href='https://github.com/max-ott'>
154
+ <img src='https://github.com/max-ott.png' width='140px;'>
143
155
  </a>
144
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
145
157
  </td>
146
- <td id='iulian-onofrei'>
147
- <a href='https://github.com/revolter'>
148
- <img src='https://github.com/revolter.png' width='140px;'>
158
+ <td id='manu-wallner'>
159
+ <a href='https://github.com/milch'>
160
+ <img src='https://github.com/milch.png' width='140px;'>
149
161
  </a>
150
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
151
163
  </td>
152
- <td id='felix-krause'>
153
- <a href='https://github.com/KrauseFx'>
154
- <img src='https://github.com/KrauseFx.png' width='140px;'>
164
+ </tr>
165
+ <tr>
166
+ <td id='joshua-liebowitz'>
167
+ <a href='https://github.com/taquitos'>
168
+ <img src='https://github.com/taquitos.png' width='140px;'>
155
169
  </a>
156
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
157
171
  </td>
158
- <td id='daniel-jankowski'>
159
- <a href='https://github.com/mollyIV'>
160
- <img src='https://github.com/mollyIV.png' width='140px;'>
172
+ <td id='satoshi-namai'>
173
+ <a href='https://github.com/ainame'>
174
+ <img src='https://github.com/ainame.png' width='140px;'>
161
175
  </a>
162
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
177
+ </td>
178
+ <td id='roger-oba'>
179
+ <a href='https://github.com/rogerluan'>
180
+ <img src='https://github.com/rogerluan.png' width='140px;'>
181
+ </a>
182
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
163
183
  </td>
164
- </tr>
165
- <tr>
166
184
  <td id='luka-mirosevic'>
167
185
  <a href='https://github.com/lmirosevic'>
168
186
  <img src='https://github.com/lmirosevic.png' width='140px;'>
@@ -175,37 +193,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
193
  </a>
176
194
  <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
177
195
  </td>
178
- <td id='kohki-miki'>
179
- <a href='https://github.com/giginet'>
180
- <img src='https://github.com/giginet.png' width='140px;'>
181
- </a>
182
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
183
- </td>
184
- <td id='josh-holtz'>
185
- <a href='https://github.com/joshdholtz'>
186
- <img src='https://github.com/joshdholtz.png' width='140px;'>
187
- </a>
188
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
189
- </td>
190
- <td id='manu-wallner'>
191
- <a href='https://github.com/milch'>
192
- <img src='https://github.com/milch.png' width='140px;'>
193
- </a>
194
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
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='stefan-natchev'>
199
+ <a href='https://github.com/snatchev'>
200
+ <img src='https://github.com/snatchev.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/snatchev'>Stefan Natchev</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='jorge-revuelta-h'>
205
+ <a href='https://github.com/minuscorp'>
206
+ <img src='https://github.com/minuscorp.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/minuscorp'>Jorge Revuelta H</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,17 @@ 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 with optional version number
70
+ filter = {}
71
71
  if version_number
72
- filter["preReleaseVersion.version"] = version_number
72
+ filter["cfBundleShortVersionString"] = version_number
73
73
  version_number_message = "version #{version_number}"
74
74
  else
75
75
  version_number_message = "any version"
76
76
  end
77
77
 
78
78
  if platform
79
- filter["preReleaseVersion.platform"] = Spaceship::ConnectAPI::Platform.map(platform)
79
+ filter["platform"] = Spaceship::ConnectAPI::Platform.map(platform)
80
80
  platform_message = "#{platform} platform"
81
81
  else
82
82
  platform_message = "any platform"
@@ -84,19 +84,20 @@ module Fastlane
84
84
 
85
85
  UI.message("Fetching the latest build number for #{version_number_message}")
86
86
 
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 })
87
+ # Get latest build upload for optional version number and return build number if found
88
+ build_upload = Spaceship::ConnectAPI.get_build_uploads(app_id: app.id, filter: filter, sort: "-cfBundleVersion", limit: 1).first
89
+ if build_upload
90
+ build_nr = build_upload.cf_build_version
91
+ build_v = build_upload.cf_build_short_version_string
92
+ UI.message("Latest upload for version #{build_v} on #{platform_message} is build: #{build_nr}")
93
+ return OpenStruct.new({ build_nr: build_nr, build_v: build_v })
93
94
  end
94
95
 
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")
96
+ # Let user know that build upload couldn't be found
97
+ UI.important("Could not find a build upload for #{version_number_message} on #{platform_message} on App Store Connect")
97
98
 
98
99
  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")
100
+ UI.user_error!("Could not find a build upload on App Store Connect - and 'initial_build_number' option is not set")
100
101
  else
101
102
  build_nr = params[:initial_build_number]
102
103
  UI.message("Using initial build number of #{build_nr}")
@@ -140,7 +141,7 @@ module Fastlane
140
141
  conflicting_options: [:api_key_path]),
141
142
  FastlaneCore::ConfigItem.new(key: :initial_build_number,
142
143
  env_name: "INITIAL_BUILD_NUMBER",
143
- description: "sets the build number to given value if no build is in current train",
144
+ description: "sets the build number to given value if no build (upload) is in current train",
144
145
  skip_type_validation: true), # as we also allow integers, which we convert to strings anyway
145
146
  FastlaneCore::ConfigItem.new(key: :app_identifier,
146
147
  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.0'.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.0