fastlane 2.210.1 → 2.211.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -84
  3. data/deliver/lib/deliver/app_screenshot.rb +17 -0
  4. data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
  5. data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
  6. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +14 -4
  7. data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
  8. data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
  9. data/fastlane/lib/fastlane/actions/xcodes.rb +137 -0
  10. data/fastlane/lib/fastlane/actions/xcversion.rb +10 -15
  11. data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
  12. data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
  13. data/fastlane/lib/fastlane/version.rb +1 -1
  14. data/fastlane/swift/Deliverfile.swift +1 -1
  15. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  16. data/fastlane/swift/Fastlane.swift +66 -3
  17. data/fastlane/swift/Gymfile.swift +1 -1
  18. data/fastlane/swift/GymfileProtocol.swift +1 -1
  19. data/fastlane/swift/Matchfile.swift +1 -1
  20. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  21. data/fastlane/swift/Precheckfile.swift +1 -1
  22. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  23. data/fastlane/swift/Scanfile.swift +1 -1
  24. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  25. data/fastlane/swift/Screengrabfile.swift +1 -1
  26. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  27. data/fastlane/swift/Snapshotfile.swift +1 -1
  28. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  29. data/fastlane/swift/formatting/Brewfile.lock.json +20 -15
  30. data/fastlane_core/lib/fastlane_core/cert_checker.rb +2 -2
  31. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +1 -1
  32. data/frameit/lib/frameit/device.rb +1 -1
  33. data/match/lib/match/change_password.rb +2 -0
  34. data/match/lib/match/commands_generator.rb +2 -1
  35. data/match/lib/match/generator.rb +1 -0
  36. data/match/lib/match/importer.rb +2 -0
  37. data/match/lib/match/migrate.rb +4 -3
  38. data/match/lib/match/nuke.rb +2 -0
  39. data/match/lib/match/options.rb +5 -0
  40. data/match/lib/match/runner.rb +5 -2
  41. data/sigh/lib/sigh/options.rb +5 -0
  42. data/sigh/lib/sigh/runner.rb +3 -1
  43. data/snapshot/lib/assets/SnapshotHelper.swift +2 -2
  44. data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
  45. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
  46. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  47. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +10 -10
  48. data/spaceship/lib/spaceship/connect_api/models/device.rb +3 -0
  49. data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
  50. data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
  51. data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
  52. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +12 -0
  53. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +23 -0
  54. data/spaceship/lib/spaceship/connect_api.rb +5 -0
  55. metadata +28 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6056a3644c8a36607fe3acd5e867069f46a6c1be9c58062d8389c264434fb5df
4
- data.tar.gz: 69075ed95db48e5a3ec2e54f247287acbaaa410123cdaf62a0604500a0fa8f63
3
+ metadata.gz: 9109ddee20194fc927133f3885a6a460d09ea8ccf81d865822c1c7c028b428c2
4
+ data.tar.gz: 5f6fe9b0094d3fb6582e88c44ac8e4e2a0830d2f5f556628744e67f26b307f17
5
5
  SHA512:
6
- metadata.gz: 3aed689bf5abe68e25ac1fb3241bf1a0f7799d439589f82fbfb769ef92edad42653ed6b208bb888c683a47286f3993fbd6dec1419dadaabc3461287ec90eadbe
7
- data.tar.gz: 1e60186c3b01153cf0fb0fd853ba5b282d147b5c9dba7bd4886ee341d01b3c3e3ceaab446fb8850f682d67969bc6ec180c10d9eb712a6e873f0dcfa15790788a
6
+ metadata.gz: '08db10e18729135ecebec8ac1735e9ab79a4e878b1ab249b4011c086072c945f0024f4d95a241335bb8807da7a1402c98f70183f0cd45c2985d87c5de6188d03'
7
+ data.tar.gz: 20c188c9ad9a9b270d64f0dbb8011861f79a2932e7665df511401be49e0d6f8ecb03cbfb8c5ce81274e239930084c535fc2735fc3997d185545ef4460aa12d99
data/README.md CHANGED
@@ -41,55 +41,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
41
41
  </a>
42
42
  <h4 align='center'>Łukasz Grabowski</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;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
49
- </td>
50
44
  <td id='luka-mirosevic'>
51
45
  <a href='https://github.com/lmirosevic'>
52
46
  <img src='https://github.com/lmirosevic.png' width='140px;'>
53
47
  </a>
54
48
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
55
49
  </td>
50
+ <td id='satoshi-namai'>
51
+ <a href='https://github.com/ainame'>
52
+ <img src='https://github.com/ainame.png' width='140px;'>
53
+ </a>
54
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
55
+ </td>
56
56
  <td id='olivier-halligon'>
57
57
  <a href='https://github.com/AliSoftware'>
58
58
  <img src='https://github.com/AliSoftware.png' width='140px;'>
59
59
  </a>
60
60
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
61
61
  </td>
62
- <td id='iulian-onofrei'>
63
- <a href='https://github.com/revolter'>
64
- <img src='https://github.com/revolter.png' width='140px;'>
62
+ <td id='daniel-jankowski'>
63
+ <a href='https://github.com/mollyIV'>
64
+ <img src='https://github.com/mollyIV.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='joshua-liebowitz'>
71
- <a href='https://github.com/taquitos'>
72
- <img src='https://github.com/taquitos.png' width='140px;'>
73
- </a>
74
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
75
- </td>
76
- <td id='stefan-natchev'>
77
- <a href='https://github.com/snatchev'>
78
- <img src='https://github.com/snatchev.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
81
- </td>
82
70
  <td id='kohki-miki'>
83
71
  <a href='https://github.com/giginet'>
84
72
  <img src='https://github.com/giginet.png' width='140px;'>
85
73
  </a>
86
74
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
87
75
  </td>
88
- <td id='jimmy-dee'>
89
- <a href='https://github.com/jdee'>
90
- <img src='https://github.com/jdee.png' width='140px;'>
76
+ <td id='stefan-natchev'>
77
+ <a href='https://github.com/snatchev'>
78
+ <img src='https://github.com/snatchev.png' width='140px;'>
91
79
  </a>
92
- <h4 align='center'>Jimmy Dee</h4>
80
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
93
81
  </td>
94
82
  <td id='felix-krause'>
95
83
  <a href='https://github.com/KrauseFx'>
@@ -97,51 +85,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
97
85
  </a>
98
86
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
99
87
  </td>
100
- </tr>
101
- <tr>
102
- <td id='roger-oba'>
103
- <a href='https://github.com/rogerluan'>
104
- <img src='https://github.com/rogerluan.png' width='140px;'>
105
- </a>
106
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
107
- </td>
108
- <td id='max-ott'>
109
- <a href='https://github.com/max-ott'>
110
- <img src='https://github.com/max-ott.png' width='140px;'>
111
- </a>
112
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
113
- </td>
114
- <td id='satoshi-namai'>
115
- <a href='https://github.com/ainame'>
116
- <img src='https://github.com/ainame.png' width='140px;'>
117
- </a>
118
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
119
- </td>
120
- <td id='daniel-jankowski'>
121
- <a href='https://github.com/mollyIV'>
122
- <img src='https://github.com/mollyIV.png' width='140px;'>
88
+ <td id='danielle-tomlinson'>
89
+ <a href='https://github.com/endocrimes'>
90
+ <img src='https://github.com/endocrimes.png' width='140px;'>
123
91
  </a>
124
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
125
93
  </td>
126
- <td id='manu-wallner'>
127
- <a href='https://github.com/milch'>
128
- <img src='https://github.com/milch.png' width='140px;'>
94
+ <td id='jimmy-dee'>
95
+ <a href='https://github.com/jdee'>
96
+ <img src='https://github.com/jdee.png' width='140px;'>
129
97
  </a>
130
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
98
+ <h4 align='center'>Jimmy Dee</h4>
131
99
  </td>
132
100
  </tr>
133
101
  <tr>
134
- <td id='jan-piotrowski'>
135
- <a href='https://github.com/janpio'>
136
- <img src='https://github.com/janpio.png' width='140px;'>
102
+ <td id='matthew-ellis'>
103
+ <a href='https://github.com/matthewellis'>
104
+ <img src='https://github.com/matthewellis.png' width='140px;'>
137
105
  </a>
138
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
139
107
  </td>
140
- <td id='aaron-brager'>
141
- <a href='https://github.com/getaaron'>
142
- <img src='https://github.com/getaaron.png' width='140px;'>
108
+ <td id='jérôme-lacoste'>
109
+ <a href='https://github.com/lacostej'>
110
+ <img src='https://github.com/lacostej.png' width='140px;'>
143
111
  </a>
144
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
145
113
  </td>
146
114
  <td id='andrew-mcburney'>
147
115
  <a href='https://github.com/armcburney'>
@@ -149,43 +117,63 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
149
117
  </a>
150
118
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
151
119
  </td>
152
- <td id='maksym-grebenets'>
153
- <a href='https://github.com/mgrebenets'>
154
- <img src='https://github.com/mgrebenets.png' width='140px;'>
120
+ <td id='manu-wallner'>
121
+ <a href='https://github.com/milch'>
122
+ <img src='https://github.com/milch.png' width='140px;'>
155
123
  </a>
156
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
125
+ </td>
126
+ <td id='max-ott'>
127
+ <a href='https://github.com/max-ott'>
128
+ <img src='https://github.com/max-ott.png' width='140px;'>
129
+ </a>
130
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
157
131
  </td>
132
+ </tr>
133
+ <tr>
158
134
  <td id='jorge-revuelta-h'>
159
135
  <a href='https://github.com/minuscorp'>
160
136
  <img src='https://github.com/minuscorp.png' width='140px;'>
161
137
  </a>
162
138
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
163
139
  </td>
164
- </tr>
165
- <tr>
166
140
  <td id='manish-rathi'>
167
141
  <a href='https://github.com/crazymanish'>
168
142
  <img src='https://github.com/crazymanish.png' width='140px;'>
169
143
  </a>
170
144
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
171
145
  </td>
172
- <td id='matthew-ellis'>
173
- <a href='https://github.com/matthewellis'>
174
- <img src='https://github.com/matthewellis.png' width='140px;'>
146
+ <td id='joshua-liebowitz'>
147
+ <a href='https://github.com/taquitos'>
148
+ <img src='https://github.com/taquitos.png' width='140px;'>
175
149
  </a>
176
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
177
151
  </td>
178
- <td id='helmut-januschka'>
179
- <a href='https://github.com/hjanuschka'>
180
- <img src='https://github.com/hjanuschka.png' width='140px;'>
152
+ <td id='iulian-onofrei'>
153
+ <a href='https://github.com/revolter'>
154
+ <img src='https://github.com/revolter.png' width='140px;'>
181
155
  </a>
182
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
183
157
  </td>
184
- <td id='jérôme-lacoste'>
185
- <a href='https://github.com/lacostej'>
186
- <img src='https://github.com/lacostej.png' width='140px;'>
158
+ <td id='maksym-grebenets'>
159
+ <a href='https://github.com/mgrebenets'>
160
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
187
161
  </a>
188
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
163
+ </td>
164
+ </tr>
165
+ <tr>
166
+ <td id='roger-oba'>
167
+ <a href='https://github.com/rogerluan'>
168
+ <img src='https://github.com/rogerluan.png' width='140px;'>
169
+ </a>
170
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
171
+ </td>
172
+ <td id='aaron-brager'>
173
+ <a href='https://github.com/getaaron'>
174
+ <img src='https://github.com/getaaron.png' width='140px;'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
189
177
  </td>
190
178
  <td id='josh-holtz'>
191
179
  <a href='https://github.com/joshdholtz'>
@@ -193,13 +181,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
193
181
  </a>
194
182
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
195
183
  </td>
184
+ <td id='fumiya-nakamura'>
185
+ <a href='https://github.com/nafu'>
186
+ <img src='https://github.com/nafu.png' width='140px;'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
189
+ </td>
190
+ <td id='jan-piotrowski'>
191
+ <a href='https://github.com/janpio'>
192
+ <img src='https://github.com/janpio.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
195
+ </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='danielle-tomlinson'>
199
- <a href='https://github.com/endocrimes'>
200
- <img src='https://github.com/endocrimes.png' width='140px;'>
198
+ <td id='helmut-januschka'>
199
+ <a href='https://github.com/hjanuschka'>
200
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -23,6 +23,8 @@ module Deliver
23
23
  IOS_61 = "iOS-6.1-in"
24
24
  # iPhone XS Max
25
25
  IOS_65 = "iOS-6.5-in"
26
+ # iPhone 14 Pro Max
27
+ IOS_67 = "iOS-6.7-in"
26
28
 
27
29
  # iPad
28
30
  IOS_IPAD = "iOS-iPad"
@@ -47,6 +49,8 @@ module Deliver
47
49
  IOS_61_MESSAGES = "iOS-6.1-in-messages"
48
50
  # iPhone XS Max iMessage
49
51
  IOS_65_MESSAGES = "iOS-6.5-in-messages"
52
+ # iPhone 14 Pro Max iMessage
53
+ IOS_67_MESSAGES = "iOS-6.7-in-messages"
50
54
 
51
55
  # iPad iMessage
52
56
  IOS_IPAD_MESSAGES = "iOS-iPad-messages"
@@ -101,6 +105,7 @@ module Deliver
101
105
  ScreenSize::IOS_55 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_55, # also 7 Plus & 8 Plus
102
106
  ScreenSize::IOS_58 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_58,
103
107
  ScreenSize::IOS_65 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_65,
108
+ ScreenSize::IOS_67 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPHONE_67,
104
109
  ScreenSize::IOS_IPAD => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_97,
105
110
  ScreenSize::IOS_IPAD_10_5 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_105,
106
111
  ScreenSize::IOS_IPAD_11 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_PRO_3GEN_11,
@@ -111,6 +116,7 @@ module Deliver
111
116
  ScreenSize::IOS_55_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_55, # also 7 Plus & 8 Plus
112
117
  ScreenSize::IOS_58_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_58,
113
118
  ScreenSize::IOS_65_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_65,
119
+ ScreenSize::IOS_67_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_67,
114
120
  ScreenSize::IOS_IPAD_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_97,
115
121
  ScreenSize::IOS_IPAD_PRO_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_129,
116
122
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_3GEN_129,
@@ -135,6 +141,7 @@ module Deliver
135
141
  ScreenSize::IOS_58 => "iPhone XS",
136
142
  ScreenSize::IOS_61 => "iPhone XR",
137
143
  ScreenSize::IOS_65 => "iPhone XS Max",
144
+ ScreenSize::IOS_67 => "iPhone 14 Pro Max",
138
145
  ScreenSize::IOS_IPAD => "iPad",
139
146
  ScreenSize::IOS_IPAD_10_5 => "iPad 10.5",
140
147
  ScreenSize::IOS_IPAD_11 => "iPad 11",
@@ -146,6 +153,7 @@ module Deliver
146
153
  ScreenSize::IOS_58_MESSAGES => "iPhone XS (iMessage)",
147
154
  ScreenSize::IOS_61_MESSAGES => "iPhone XR (iMessage)",
148
155
  ScreenSize::IOS_65_MESSAGES => "iPhone XS Max (iMessage)",
156
+ ScreenSize::IOS_67_MESSAGES => "iPhone 14 Pro Max (iMessage)",
149
157
  ScreenSize::IOS_IPAD_MESSAGES => "iPad (iMessage)",
150
158
  ScreenSize::IOS_IPAD_PRO_MESSAGES => "iPad Pro (iMessage)",
151
159
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => "iPad Pro (12.9-inch) (3rd generation) (iMessage)",
@@ -175,6 +183,7 @@ module Deliver
175
183
  ScreenSize::IOS_55_MESSAGES,
176
184
  ScreenSize::IOS_58_MESSAGES,
177
185
  ScreenSize::IOS_65_MESSAGES,
186
+ ScreenSize::IOS_67_MESSAGES,
178
187
  ScreenSize::IOS_IPAD_MESSAGES,
179
188
  ScreenSize::IOS_IPAD_PRO_MESSAGES,
180
189
  ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES,
@@ -187,6 +196,10 @@ module Deliver
187
196
  # This list does not include iPad Pro 12.9-inch (3rd generation)
188
197
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
189
198
  return {
199
+ ScreenSize::IOS_67_MESSAGES => [
200
+ [1290, 2796],
201
+ [2796, 1290]
202
+ ],
190
203
  ScreenSize::IOS_65_MESSAGES => [
191
204
  [1242, 2688],
192
205
  [2688, 1242],
@@ -247,6 +260,10 @@ module Deliver
247
260
  # This list does not include iPad Pro 12.9-inch (3rd generation)
248
261
  # because it has same resoluation as IOS_IPAD_PRO and will clobber
249
262
  return {
263
+ ScreenSize::IOS_67 => [
264
+ [1290, 2796],
265
+ [2796, 1290]
266
+ ],
250
267
  ScreenSize::IOS_65 => [
251
268
  [1242, 2688],
252
269
  [2688, 1242],
@@ -74,7 +74,7 @@ That's all you need to build your application. If you want more control, here ar
74
74
  fastlane gym --workspace "Example.xcworkspace" --scheme "AppName" --clean
75
75
  ```
76
76
 
77
- If you need to use a different Xcode installation, use `xcode-select` or define `DEVELOPER_DIR`:
77
+ If you need to use a different Xcode installation, use `[xcodes](https://docs.fastlane.tools/actions/xcodes)` or define `DEVELOPER_DIR`:
78
78
 
79
79
  ```no-highlight
80
80
  DEVELOPER_DIR="/Applications/Xcode6.2.app" fastlane gym
@@ -150,7 +150,7 @@ build_app(
150
150
  scheme: "Release",
151
151
  export_method: "app-store",
152
152
  export_options: {
153
- provisioningProfiles: {
153
+ provisioningProfiles: {
154
154
  "com.example.bundleid" => "Provisioning Profile Name",
155
155
  "com.example.bundleid2" => "Provisioning Profile Name 2"
156
156
  }
@@ -184,10 +184,10 @@ end
184
184
  error do |lane, exception|
185
185
  slack(
186
186
  # message with short human friendly message
187
- message: exception.to_s,
188
- success: false,
187
+ message: exception.to_s,
188
+ success: false,
189
189
  # Output containing extended log output
190
- payload: { "Output" => exception.error_info.to_s }
190
+ payload: { "Output" => exception.error_info.to_s }
191
191
  )
192
192
  end
193
193
  ```
@@ -100,7 +100,7 @@ That's all you need to run your tests. If you want more control, here are some a
100
100
  fastlane scan --workspace "Example.xcworkspace" --scheme "AppName" --device "iPhone 6" --clean
101
101
  ```
102
102
 
103
- If you need to use a different Xcode install, use `xcode-select` or define `DEVELOPER_DIR`:
103
+ If you need to use a different Xcode install, use `[xcodes](https://docs.fastlane.tools/actions/xcodes)` or define `DEVELOPER_DIR`:
104
104
 
105
105
  ```no-highlight
106
106
  DEVELOPER_DIR="/Applications/Xcode6.2.app" scan
@@ -36,18 +36,22 @@ module Fastlane
36
36
  end
37
37
 
38
38
  style_value = params[:use_automatic_signing] ? 'Automatic' : 'Manual'
39
+ development_team_setting = params[:sdk] ? "DEVELOPMENT_TEAM[sdk=#{params[:sdk]}]" : "DEVELOPMENT_TEAM"
40
+ code_sign_identity_setting = params[:sdk] ? "CODE_SIGN_IDENTITY[sdk=#{params[:sdk]}]" : "CODE_SIGN_IDENTITY"
41
+ provisioning_profile_setting = params[:sdk] ? "PROVISIONING_PROFILE_SPECIFIER[sdk=#{params[:sdk]}]" : "PROVISIONING_PROFILE_SPECIFIER"
42
+
39
43
  set_build_setting(config, "CODE_SIGN_STYLE", style_value)
40
44
 
41
45
  if params[:team_id]
42
- set_build_setting(config, "DEVELOPMENT_TEAM", params[:team_id])
46
+ set_build_setting(config, development_team_setting, params[:team_id])
43
47
  UI.important("Set Team id to: #{params[:team_id]} for target: #{target.name} for build configuration: #{config.name}")
44
48
  end
45
49
  if params[:code_sign_identity]
46
- set_build_setting(config, "CODE_SIGN_IDENTITY", params[:code_sign_identity])
50
+ set_build_setting(config, code_sign_identity_setting, params[:code_sign_identity])
47
51
  UI.important("Set Code Sign identity to: #{params[:code_sign_identity]} for target: #{target.name} for build configuration: #{config.name}")
48
52
  end
49
53
  if params[:profile_name]
50
- set_build_setting(config, "PROVISIONING_PROFILE_SPECIFIER", params[:profile_name])
54
+ set_build_setting(config, provisioning_profile_setting, params[:profile_name])
51
55
  UI.important("Set Provisioning Profile name to: #{params[:profile_name]} for target: #{target.name} for build configuration: #{config.name}")
52
56
  end
53
57
  if params[:entitlements_file_path]
@@ -129,6 +133,10 @@ module Fastlane
129
133
  description: "Defines if project should use automatic signing",
130
134
  type: Boolean,
131
135
  default_value: false),
136
+ FastlaneCore::ConfigItem.new(key: :sdk,
137
+ env_name: "FASTLANE_BUILD_SDK",
138
+ optional: true,
139
+ description: "Build target SDKs (iphoneos*, macosx*, iphonesimulator*)"),
132
140
  FastlaneCore::ConfigItem.new(key: :team_id,
133
141
  env_name: "FASTLANE_TEAM_ID",
134
142
  optional: true,
@@ -183,10 +191,12 @@ module Fastlane
183
191
  )',
184
192
  ' # more advanced manual code signing
185
193
  update_code_signing_settings(
186
- use_automatic_signing: true,
194
+ use_automatic_signing: false,
187
195
  path: "demo-project/demo/demo.xcodeproj",
188
196
  team_id: "QABC123DEV",
189
197
  bundle_identifier: "com.demoapp.QABC123DEV",
198
+ code_sign_identity: "iPhone Distribution",
199
+ sdk: "iphoneos*",
190
200
  profile_name: "Demo App Deployment Profile",
191
201
  entitlements_file_path: "Demo App/generated/New.entitlements"
192
202
  )'
@@ -101,7 +101,11 @@ module Fastlane
101
101
  end
102
102
 
103
103
  def self.category
104
- :building
104
+ :deprecated
105
+ end
106
+
107
+ def self.deprecated_notes
108
+ "The xcode-install gem, which this action depends on, has been sunset. Please migrate to [xcodes](https://docs.fastlane.tools/actions/xcodes). You can find a migration guide here: [xcpretty/xcode-install/MIGRATION.md](https://github.com/xcpretty/xcode-install/blob/master/MIGRATION.md)"
105
109
  end
106
110
  end
107
111
  end
@@ -40,7 +40,7 @@ module Fastlane
40
40
  def self.details
41
41
  [
42
42
  "Select and build with the Xcode installed at the provided path.",
43
- "Use the `xcversion` action if you want to select an Xcode:",
43
+ "Use the `xcodes` action if you want to select an Xcode:",
44
44
  "- Based on a version specifier or",
45
45
  "- You don't have known, stable paths, as may happen in a CI environment."
46
46
  ].join("\n")
@@ -0,0 +1,137 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ XCODES_XCODE_PATH = :XCODES_XCODE_PATH
5
+ end
6
+
7
+ class XcodesAction < Action
8
+ def self.run(params)
9
+ binary = params[:binary_path]
10
+ xcodes_raw_version = Actions.sh("#{binary} version", log: false)
11
+ xcodes_version = Gem::Version.new(xcodes_raw_version)
12
+ UI.message("Running xcodes version #{xcodes_version}")
13
+ if xcodes_version < Gem::Version.new("1.1.0")
14
+ UI.user_error!([
15
+ "xcodes action requires the minimum version of xcodes binary to be v1.1.0.",
16
+ "Please update xcodes. If you installed it via Homebrew, this can be done via 'brew upgrade xcodes'"
17
+ ].join(" "))
18
+ end
19
+
20
+ version = params[:version]
21
+ command = []
22
+ command << binary
23
+
24
+ if (xcodes_args = params[:xcodes_args])
25
+ command << xcodes_args
26
+ Actions.sh(command.join(" "))
27
+ elsif !params[:select_for_current_build_only]
28
+ command << "install"
29
+ command << "'#{version}'"
30
+ command << "--update" if params[:update_list]
31
+ command << "--select"
32
+ Actions.sh(command.join(" "))
33
+ end
34
+
35
+ command = []
36
+ command << binary
37
+ command << "installed"
38
+ command << "'#{version}'"
39
+ # Prints something like /Applications/Xcode-14.app
40
+ xcode_path = Actions.sh(command.join(" ")).strip
41
+ xcode_developer_path = File.join(xcode_path, "/Contents/Developer")
42
+
43
+ UI.message("Setting Xcode version '#{version}' at '#{xcode_path}' for all build steps")
44
+ ENV["DEVELOPER_DIR"] = xcode_developer_path
45
+ Actions.lane_context[SharedValues::XCODES_XCODE_PATH] = xcode_developer_path
46
+ return xcode_path
47
+ end
48
+
49
+ #####################################################
50
+ # @!group Documentation
51
+ #####################################################
52
+
53
+ def self.description
54
+ "Make sure a certain version of Xcode is installed, installing it only if needed"
55
+ end
56
+
57
+ def self.details
58
+ [
59
+ "Makes sure a specific version of Xcode is installed. If that's not the case, it will automatically be downloaded by [xcodes](https://github.com/RobotsAndPencils/xcodes).",
60
+ "This will make sure to use the correct Xcode version for later actions.",
61
+ "Note that this action depends on [xcodes](https://github.com/RobotsAndPencils/xcodes) CLI, so make sure you have it installed in your environment. For the installation guide, see: https://github.com/RobotsAndPencils/xcodes#installation"
62
+ ].join("\n")
63
+ end
64
+
65
+ def self.available_options
66
+ [
67
+ FastlaneCore::ConfigItem.new(key: :version,
68
+ env_name: "FL_XCODE_VERSION",
69
+ description: "The version number of the version of Xcode to install. Defaults to the value specified in the .xcode-version file",
70
+ default_value: Helper::XcodesHelper.read_xcode_version_file,
71
+ default_value_dynamic: true,
72
+ verify_block: Helper::XcodesHelper::Verify.method(:requirement)),
73
+ FastlaneCore::ConfigItem.new(key: :update_list,
74
+ env_name: "FL_XCODES_UPDATE_LIST",
75
+ description: "Whether the list of available Xcode versions should be updated before running the install command",
76
+ type: Boolean,
77
+ default_value: true),
78
+ FastlaneCore::ConfigItem.new(key: :select_for_current_build_only,
79
+ env_name: "FL_XCODES_SELECT_FOR_CURRENT_BUILD_ONLY",
80
+ description: [
81
+ "When true, it won't attempt to install an Xcode version, just find the installed Xcode version that best matches the passed version argument, and select it for the current build steps.",
82
+ "It doesn't change the global Xcode version (e.g. via 'xcrun xcode-select'), which would require sudo permissions — when this option is true, this action doesn't require sudo permissions"
83
+ ].join(" "),
84
+ type: Boolean,
85
+ default_value: false),
86
+ FastlaneCore::ConfigItem.new(key: :binary_path,
87
+ env_name: "FL_XCODES_BINARY_PATH",
88
+ description: "Where the xcodes binary lives on your system (full path)",
89
+ default_value: Helper::XcodesHelper.find_xcodes_binary_path,
90
+ default_value_dynamic: true,
91
+ verify_block: proc do |value|
92
+ UI.user_error!("'xcodes' doesn't seem to be installed. Please follow the installation guide at https://github.com/RobotsAndPencils/xcodes#installation before proceeding") if value.empty?
93
+ UI.user_error!("Couldn't find xcodes binary at path '#{value}'") unless File.exist?(value)
94
+ end),
95
+ FastlaneCore::ConfigItem.new(key: :xcodes_args,
96
+ env_name: "FL_XCODES_ARGS",
97
+ description: "Pass in xcodes command line arguments directly. When present, other parameters are ignored and only this parameter is used to build the command to be executed",
98
+ type: :shell_string,
99
+ optional: true)
100
+ ]
101
+ end
102
+
103
+ def self.output
104
+ [
105
+ ['XCODES_XCODE_PATH', 'The path to the newly installed Xcode version']
106
+ ]
107
+ end
108
+
109
+ def self.return_value
110
+ "The path to the newly installed Xcode version"
111
+ end
112
+
113
+ def self.return_type
114
+ :string
115
+ end
116
+
117
+ def self.authors
118
+ ["rogerluan"]
119
+ end
120
+
121
+ def self.is_supported?(platform)
122
+ [:ios, :mac].include?(platform)
123
+ end
124
+
125
+ def self.example_code
126
+ [
127
+ 'xcodes(version: "14.1")',
128
+ 'xcodes # When missing, the version value defaults to the value specified in the .xcode-version file'
129
+ ]
130
+ end
131
+
132
+ def self.category
133
+ :building
134
+ end
135
+ end
136
+ end
137
+ end
@@ -15,16 +15,6 @@ module Fastlane
15
15
  ENV["DEVELOPER_DIR"] = File.join(xcode.path, "/Contents/Developer")
16
16
  end
17
17
 
18
- def self.read_xcode_version_file
19
- xcode_version_paths = Dir.glob(".xcode-version")
20
-
21
- if xcode_version_paths.first
22
- return File.read(xcode_version_paths.first).strip
23
- end
24
-
25
- return nil
26
- end
27
-
28
18
  def self.description
29
19
  "Select an Xcode to use by version specifier"
30
20
  end
@@ -44,10 +34,10 @@ module Fastlane
44
34
  [
45
35
  FastlaneCore::ConfigItem.new(key: :version,
46
36
  env_name: "FL_XCODE_VERSION",
47
- description: "The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')",
48
- default_value: self.read_xcode_version_file,
37
+ description: "The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0'). Defaults to the value specified in the .xcode-version file ",
38
+ default_value: Helper::XcodesHelper.read_xcode_version_file,
49
39
  default_value_dynamic: true,
50
- verify_block: Helper::XcversionHelper::Verify.method(:requirement))
40
+ verify_block: Helper::XcodesHelper::Verify.method(:requirement))
51
41
  ]
52
42
  end
53
43
 
@@ -58,12 +48,17 @@ module Fastlane
58
48
  def self.example_code
59
49
  [
60
50
  'xcversion(version: "8.1") # Selects Xcode 8.1.0',
61
- 'xcversion(version: "~> 8.1.0") # Selects the latest installed version from the 8.1.x set'
51
+ 'xcversion(version: "~> 8.1.0") # Selects the latest installed version from the 8.1.x set',
52
+ 'xcversion # When missing, the version value defaults to the value specified in the .xcode-version file'
62
53
  ]
63
54
  end
64
55
 
65
56
  def self.category
66
- :building
57
+ :deprecated
58
+ end
59
+
60
+ def self.deprecated_notes
61
+ "The xcode-install gem, which this action depends on, has been sunset. Please migrate to [xcodes](https://docs.fastlane.tools/actions/xcodes). You can find a migration guide here: [xcpretty/xcode-install/MIGRATION.md](https://github.com/xcpretty/xcode-install/blob/master/MIGRATION.md)"
67
62
  end
68
63
  end
69
64
  end