fastlane 2.150.0 → 2.151.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -74
  3. data/{fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp → deliver/lib/deliver/.commands_generator.rb.swp} +0 -0
  4. data/deliver/lib/deliver/.download_screenshots.rb.swp +0 -0
  5. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  6. data/deliver/lib/deliver/app_screenshot.rb +4 -4
  7. data/deliver/lib/deliver/options.rb +7 -1
  8. data/deliver/lib/deliver/runner.rb +7 -3
  9. data/deliver/lib/deliver/submit_for_review.rb +7 -7
  10. data/deliver/lib/deliver/upload_metadata.rb +8 -8
  11. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -0
  12. data/fastlane/lib/fastlane/actions/notarize.rb +13 -3
  13. data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
  14. data/fastlane/lib/fastlane/actions/resign.rb +1 -1
  15. data/fastlane/lib/fastlane/actions/setup_ci.rb +5 -0
  16. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/slather.rb +7 -0
  19. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +10 -2
  20. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  21. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +28 -11
  22. data/fastlane/lib/fastlane/server/socket_server.rb +7 -1
  23. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  24. data/fastlane/lib/fastlane/version.rb +1 -1
  25. data/fastlane/swift/Actions.swift +1 -1
  26. data/fastlane/swift/ArgumentProcessor.swift +24 -24
  27. data/fastlane/swift/ControlCommand.swift +3 -3
  28. data/fastlane/swift/Deliverfile.swift +4 -8
  29. data/fastlane/swift/DeliverfileProtocol.swift +181 -182
  30. data/fastlane/swift/Fastlane.swift +2819 -2805
  31. data/fastlane/swift/Gymfile.swift +4 -8
  32. data/fastlane/swift/GymfileProtocol.swift +133 -134
  33. data/fastlane/swift/LaneFileProtocol.swift +17 -17
  34. data/fastlane/swift/Matchfile.swift +4 -8
  35. data/fastlane/swift/MatchfileProtocol.swift +115 -112
  36. data/fastlane/swift/Plugins.swift +1 -1
  37. data/fastlane/swift/Precheckfile.swift +4 -8
  38. data/fastlane/swift/PrecheckfileProtocol.swift +22 -23
  39. data/fastlane/swift/RubyCommand.swift +34 -37
  40. data/fastlane/swift/RubyCommandable.swift +3 -1
  41. data/fastlane/swift/Runner.swift +76 -69
  42. data/fastlane/swift/Scanfile.swift +4 -8
  43. data/fastlane/swift/ScanfileProtocol.swift +190 -191
  44. data/fastlane/swift/Screengrabfile.swift +4 -8
  45. data/fastlane/swift/ScreengrabfileProtocol.swift +67 -68
  46. data/fastlane/swift/Snapshotfile.swift +4 -8
  47. data/fastlane/swift/SnapshotfileProtocol.swift +127 -128
  48. data/fastlane/swift/SocketClient.swift +84 -90
  49. data/fastlane/swift/SocketResponse.swift +14 -14
  50. data/fastlane/swift/formatting/Brewfile +1 -0
  51. data/fastlane/swift/formatting/Brewfile.lock.json +39 -0
  52. data/fastlane/swift/formatting/Rakefile +18 -0
  53. data/fastlane/swift/main.swift +5 -6
  54. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +15 -7
  55. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  56. data/{fastlane/lib/fastlane/actions/.hockey.rb.swp → frameit/lib/frameit/.editor.rb.swp} +0 -0
  57. data/match/lib/assets/READMETemplate.md +5 -2
  58. data/match/lib/match/options.rb +4 -0
  59. data/match/lib/match/runner.rb +1 -0
  60. data/match/lib/match/storage/git_storage.rb +1 -1
  61. data/match/lib/match/storage/s3_storage.rb +25 -7
  62. data/sigh/lib/assets/resign.sh +18 -0
  63. data/spaceship/lib/spaceship/{connect_api/.DS_Store → .DS_Store} +0 -0
  64. data/spaceship/lib/spaceship/client.rb +1 -2
  65. data/spaceship/lib/spaceship/connect_api.rb +2 -1
  66. data/spaceship/lib/spaceship/connect_api/client.rb +0 -1
  67. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
  68. data/spaceship/lib/spaceship/connect_api/models/app.rb +3 -3
  69. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +26 -2
  70. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +3 -2
  71. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +31 -2
  72. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +24 -2
  73. data/spaceship/lib/spaceship/connect_api/models/{app_review_attachment.rb → app_store_review_attachment.rb} +6 -6
  74. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +2 -2
  75. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  76. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +11 -1
  77. data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +64 -0
  78. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +54 -9
  79. metadata +43 -49
  80. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  81. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  82. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  83. data/spaceship/lib/spaceship/babosa_fix.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8487fa83f02a3dc9dc73920e47fa8c8652d8870c1c591d644ee2138446d41b7d
4
- data.tar.gz: 158f51047d36d16716f02af2f790c89f4015e50a28a404ec8122a98eacf4f83b
3
+ metadata.gz: cfd7d1c9336c8f8ff4c81ee00f9f8664e166992e3f9fe2ce4a2d6276e4b8ec0e
4
+ data.tar.gz: b7fcb6b10914a8ed1b17ade412da79a449621070b0766d7cad125fd7febdf658
5
5
  SHA512:
6
- metadata.gz: 482164ad088f8bc85cbbb31446a0e766c597d7fc50f5cd9d98888f176d15fcbdeaf16d0a54ca92cf72a73d55bcef6bdcc98a2a8c07b303430b374546d0f77225
7
- data.tar.gz: 54fa6088bc3373a0d936999022b54050fbd1f82bab8cd6dce45e0403dee4a213d2f5d7f950f5bcaa83599e1dc24668e1d156ab213be15bd2904a1340b45ebea5
6
+ metadata.gz: 69257559599f748e013b9e1d442f5e1d40cfca677ccb78506e2e0d50ddd15698830c2a81f736ff1f42e848cb19691fcae0ea5ea2c1822abbee30b0c77bbf4a2c
7
+ data.tar.gz: 1493a4e6f35225da586412e51f13b3ea5c426c6c0832cd3c90a92ed3a82fbc9a7632ad2f3b129805679c02e5f191c2079caf7d844a76e36fe51775c0384f62f9
data/README.md CHANGED
@@ -34,11 +34,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='joshua-liebowitz'>
38
- <a href='https://github.com/taquitos'>
39
- <img src='https://github.com/taquitos.png?size=140'>
37
+ <td id='manu-wallner'>
38
+ <a href='https://github.com/milch'>
39
+ <img src='https://github.com/milch.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
42
+ </td>
43
+ <td id='stefan-natchev'>
44
+ <a href='https://github.com/snatchev'>
45
+ <img src='https://github.com/snatchev.png?size=140'>
46
+ </a>
47
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
42
48
  </td>
43
49
  <td id='matthew-ellis'>
44
50
  <a href='https://github.com/matthewellis'>
@@ -46,11 +52,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
46
52
  </a>
47
53
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
48
54
  </td>
49
- <td id='helmut-januschka'>
50
- <a href='https://github.com/hjanuschka'>
51
- <img src='https://github.com/hjanuschka.png?size=140'>
55
+ <td id='maksym-grebenets'>
56
+ <a href='https://github.com/mgrebenets'>
57
+ <img src='https://github.com/mgrebenets.png?size=140'>
52
58
  </a>
53
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
54
60
  </td>
55
61
  <td id='josh-holtz'>
56
62
  <a href='https://github.com/joshdholtz'>
@@ -58,31 +64,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
58
64
  </a>
59
65
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
60
66
  </td>
61
- <td id='max-ott'>
62
- <a href='https://github.com/max-ott'>
63
- <img src='https://github.com/max-ott.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
66
- </td>
67
67
  </tr>
68
68
  <tr>
69
+ <td id='jimmy-dee'>
70
+ <a href='https://github.com/jdee'>
71
+ <img src='https://github.com/jdee.png?size=140'>
72
+ </a>
73
+ <h4 align='center'>Jimmy Dee</h4>
74
+ </td>
75
+ <td id='andrew-mcburney'>
76
+ <a href='https://github.com/armcburney'>
77
+ <img src='https://github.com/armcburney.png?size=140'>
78
+ </a>
79
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
80
+ </td>
81
+ <td id='olivier-halligon'>
82
+ <a href='https://github.com/AliSoftware'>
83
+ <img src='https://github.com/AliSoftware.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
86
+ </td>
69
87
  <td id='luka-mirosevic'>
70
88
  <a href='https://github.com/lmirosevic'>
71
89
  <img src='https://github.com/lmirosevic.png?size=140'>
72
90
  </a>
73
91
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
74
92
  </td>
93
+ <td id='jan-piotrowski'>
94
+ <a href='https://github.com/janpio'>
95
+ <img src='https://github.com/janpio.png?size=140'>
96
+ </a>
97
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
98
+ </td>
99
+ </tr>
100
+ <tr>
75
101
  <td id='iulian-onofrei'>
76
102
  <a href='https://github.com/revolter'>
77
103
  <img src='https://github.com/revolter.png?size=140'>
78
104
  </a>
79
105
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
80
106
  </td>
81
- <td id='jimmy-dee'>
82
- <a href='https://github.com/jdee'>
83
- <img src='https://github.com/jdee.png?size=140'>
107
+ <td id='max-ott'>
108
+ <a href='https://github.com/max-ott'>
109
+ <img src='https://github.com/max-ott.png?size=140'>
84
110
  </a>
85
- <h4 align='center'>Jimmy Dee</h4>
111
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
112
+ </td>
113
+ <td id='kohki-miki'>
114
+ <a href='https://github.com/giginet'>
115
+ <img src='https://github.com/giginet.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
86
118
  </td>
87
119
  <td id='jérôme-lacoste'>
88
120
  <a href='https://github.com/lacostej'>
@@ -90,63 +122,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
90
122
  </a>
91
123
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
92
124
  </td>
93
- <td id='manu-wallner'>
94
- <a href='https://github.com/milch'>
95
- <img src='https://github.com/milch.png?size=140'>
125
+ <td id='joshua-liebowitz'>
126
+ <a href='https://github.com/taquitos'>
127
+ <img src='https://github.com/taquitos.png?size=140'>
96
128
  </a>
97
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
98
130
  </td>
99
131
  </tr>
100
132
  <tr>
101
- <td id='felix-krause'>
102
- <a href='https://github.com/KrauseFx'>
103
- <img src='https://github.com/KrauseFx.png?size=140'>
104
- </a>
105
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
106
- </td>
107
- <td id='jan-piotrowski'>
108
- <a href='https://github.com/janpio'>
109
- <img src='https://github.com/janpio.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
112
- </td>
113
- <td id='stefan-natchev'>
114
- <a href='https://github.com/snatchev'>
115
- <img src='https://github.com/snatchev.png?size=140'>
116
- </a>
117
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
118
- </td>
119
- <td id='olivier-halligon'>
120
- <a href='https://github.com/AliSoftware'>
121
- <img src='https://github.com/AliSoftware.png?size=140'>
122
- </a>
123
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
124
- </td>
125
133
  <td id='danielle-tomlinson'>
126
134
  <a href='https://github.com/endocrimes'>
127
135
  <img src='https://github.com/endocrimes.png?size=140'>
128
136
  </a>
129
137
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
130
138
  </td>
131
- </tr>
132
- <tr>
133
- <td id='aaron-brager'>
134
- <a href='https://github.com/getaaron'>
135
- <img src='https://github.com/getaaron.png?size=140'>
139
+ <td id='helmut-januschka'>
140
+ <a href='https://github.com/hjanuschka'>
141
+ <img src='https://github.com/hjanuschka.png?size=140'>
136
142
  </a>
137
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
138
144
  </td>
139
- <td id='jorge-revuelta-h'>
140
- <a href='https://github.com/minuscorp'>
141
- <img src='https://github.com/minuscorp.png?size=140'>
145
+ <td id='daniel-jankowski'>
146
+ <a href='https://github.com/mollyIV'>
147
+ <img src='https://github.com/mollyIV.png?size=140'>
142
148
  </a>
143
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
144
150
  </td>
145
- <td id='maksym-grebenets'>
146
- <a href='https://github.com/mgrebenets'>
147
- <img src='https://github.com/mgrebenets.png?size=140'>
151
+ <td id='felix-krause'>
152
+ <a href='https://github.com/KrauseFx'>
153
+ <img src='https://github.com/KrauseFx.png?size=140'>
148
154
  </a>
149
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
150
156
  </td>
151
157
  <td id='fumiya-nakamura'>
152
158
  <a href='https://github.com/nafu'>
@@ -154,25 +160,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
154
160
  </a>
155
161
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
156
162
  </td>
157
- <td id='andrew-mcburney'>
158
- <a href='https://github.com/armcburney'>
159
- <img src='https://github.com/armcburney.png?size=140'>
160
- </a>
161
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
162
- </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='kohki-miki'>
166
- <a href='https://github.com/giginet'>
167
- <img src='https://github.com/giginet.png?size=140'>
165
+ <td id='aaron-brager'>
166
+ <a href='https://github.com/getaaron'>
167
+ <img src='https://github.com/getaaron.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
170
  </td>
171
- <td id='daniel-jankowski'>
172
- <a href='https://github.com/mollyIV'>
173
- <img src='https://github.com/mollyIV.png?size=140'>
171
+ <td id='jorge-revuelta-h'>
172
+ <a href='https://github.com/minuscorp'>
173
+ <img src='https://github.com/minuscorp.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -51,9 +51,9 @@ module Deliver
51
51
  # iPad iMessage
52
52
  IOS_IPAD_MESSAGES = "iOS-iPad-messages"
53
53
  # iPad 10.5 iMessage
54
- IOS_IPAD_10_5_MESSAGES = "iOS-10.5-messages"
54
+ IOS_IPAD_10_5_MESSAGES = "iOS-iPad-10.5-messages"
55
55
  # iPad 11 iMessage
56
- IOS_IPAD_11_MESSAGES = "iOS-11-messages"
56
+ IOS_IPAD_11_MESSAGES = "iOS-iPad-11-messages"
57
57
  # iPad Pro iMessage
58
58
  IOS_IPAD_PRO_MESSAGES = "iOS-iPad-Pro-messages"
59
59
  # iPad Pro (12.9-inch) (3rd generation) iMessage
@@ -113,8 +113,8 @@ module Deliver
113
113
  ScreenSize::IOS_58_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_58,
114
114
  ScreenSize::IOS_65_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPHONE_65,
115
115
  ScreenSize::IOS_IPAD_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_97,
116
- ScreenSize::IOS_IPAD_PRO_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_PRO_129,
117
- ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_IPAD_PRO_3GEN_129,
116
+ ScreenSize::IOS_IPAD_PRO_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_129,
117
+ ScreenSize::IOS_IPAD_PRO_12_9_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_3GEN_129,
118
118
  ScreenSize::IOS_IPAD_10_5_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_105,
119
119
  ScreenSize::IOS_IPAD_11_MESSAGES => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::IMESSAGE_APP_IPAD_PRO_3GEN_11,
120
120
  ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
@@ -165,11 +165,17 @@ module Deliver
165
165
  FastlaneCore::ConfigItem.new(key: :auto_release_date,
166
166
  env_name: "DELIVER_AUTO_RELEASE_DATE",
167
167
  description: "Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)",
168
- is_string: false,
168
+ type: Integer,
169
169
  optional: true,
170
170
  conflicting_options: [:automatic_release],
171
171
  conflict_block: proc do |value|
172
172
  UI.user_error!("You can't use 'auto_release_date' and '#{value.key}' options together.")
173
+ end,
174
+ verify_block: proc do |value|
175
+ now_in_ms = Time.now.to_i * 1000
176
+ if value < now_in_ms
177
+ UI.user_error!("'#{value}' needs to be in the future and in milliseonds (current time is '#{now_in_ms}')")
178
+ end
173
179
  end),
174
180
  FastlaneCore::ConfigItem.new(key: :phased_release,
175
181
  env_name: "DELIVER_PHASED_RELEASE",
@@ -34,6 +34,11 @@ module Deliver
34
34
 
35
35
  def run
36
36
  verify_version if options[:app_version].to_s.length > 0 && !options[:skip_app_version_update]
37
+
38
+ # Rejecting before upload meta
39
+ # Screenshots can not be update/deleted if in waiting for review
40
+ reject_version_if_possible if options[:reject_if_possible]
41
+
37
42
  upload_metadata
38
43
 
39
44
  has_binary = (options[:ipa] || options[:pkg])
@@ -43,8 +48,6 @@ module Deliver
43
48
 
44
49
  UI.success("Finished the upload to App Store Connect") unless options[:skip_binary_upload]
45
50
 
46
- reject_version_if_possible if options[:reject_if_possible]
47
-
48
51
  precheck_success = precheck_app
49
52
  submit_for_review if options[:submit_for_review] && precheck_success
50
53
  end
@@ -163,7 +166,8 @@ module Deliver
163
166
  app_id = legacy_app.apple_id
164
167
  app = Spaceship::ConnectAPI::App.get(app_id: app_id)
165
168
 
166
- if app.reject_version_if_possible!
169
+ platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
170
+ if app.reject_version_if_possible!(platform: platform)
167
171
  UI.success("Successfully rejected previous version!")
168
172
  end
169
173
  end
@@ -134,10 +134,10 @@ module Deliver
134
134
  # Create, update, or delete IDFA declaration
135
135
  if uses_idfa == false
136
136
  if idfa_declaration
137
- UI.verbose("Deleting IDFA delcaration")
137
+ UI.verbose("Deleting IDFA declaration")
138
138
  idfa_declaration.delete!
139
139
  updated_idfa = true
140
- UI.verbose("Deleted IDFA delcaration")
140
+ UI.verbose("Deleted IDFA declaration")
141
141
  end
142
142
  elsif uses_idfa == true
143
143
  attributes = {
@@ -148,19 +148,19 @@ module Deliver
148
148
  }
149
149
 
150
150
  if idfa_declaration
151
- UI.verbose("Updating IDFA delcaration")
151
+ UI.verbose("Updating IDFA declaration")
152
152
  idfa_declaration.update(attributes: attributes)
153
- UI.verbose("Updated IDFA delcaration")
153
+ UI.verbose("Updated IDFA declaration")
154
154
  else
155
- UI.verbose("Creating IDFA delcaration")
155
+ UI.verbose("Creating IDFA declaration")
156
156
  version.create_idfa_declaration(attributes: attributes)
157
- UI.verbose("Created IDFA delcaration")
157
+ UI.verbose("Created IDFA declaration")
158
158
  end
159
159
 
160
160
  updated_idfa = true
161
161
  end
162
162
 
163
- UI.success("Successfully updated IDFA delcarations on App Store Connect") if updated_idfa
163
+ UI.success("Successfully updated IDFA declarations on App Store Connect") if updated_idfa
164
164
  end
165
165
 
166
166
  def update_submission_information(options, app)
@@ -330,7 +330,7 @@ module Deliver
330
330
  seconds_in_hour = 60 * 60
331
331
  time_in_s_to_hour = (time_in_s / seconds_in_hour).to_i * seconds_in_hour
332
332
 
333
- return Time.at(time_in_s_to_hour).strftime("%Y-%m-%dT%H:%M:%S%:z")
333
+ return Time.at(time_in_s_to_hour).utc.strftime("%Y-%m-%dT%H:%M:%S%:z")
334
334
  end
335
335
 
336
336
  # If the user is using the 'default' language, then assign values where they are needed
@@ -563,19 +563,19 @@ module Deliver
563
563
 
564
564
  def set_review_attachment_file(version, options)
565
565
  app_store_review_detail = version.fetch_app_store_review_detail
566
- app_review_attachments = app_store_review_detail.app_store_review_attachments || []
566
+ app_store_review_attachments = app_store_review_detail.app_store_review_attachments || []
567
567
 
568
568
  if options[:app_review_attachment_file]
569
- app_review_attachments.each do |app_review_attachment|
569
+ app_store_review_attachments.each do |app_store_review_attachment|
570
570
  UI.message("Removing previous review attachment file from App Store Connect")
571
- app_review_attachment.delete!
571
+ app_store_review_attachment.delete!
572
572
  end
573
573
 
574
574
  UI.message("Uploading review attachment file to App Store Connect")
575
575
  app_store_review_detail.upload_attachment(path: options[:app_review_attachment_file])
576
576
  else
577
- app_review_attachments.each(&:delete!)
578
- UI.message("Removing review attachment file to App Store Connect") unless app_review_attachments.empty?
577
+ app_store_review_attachments.each(&:delete!)
578
+ UI.message("Removing review attachment file to App Store Connect") unless app_store_review_attachments.empty?
579
579
  end
580
580
  end
581
581
 
@@ -614,8 +614,8 @@ module Deliver
614
614
  end
615
615
  UI.deprecated("You can find more info at https://docs.fastlane.tools/actions/deliver/#reference") if has_mapped_values
616
616
 
617
- age_rating_delcaration = version.fetch_age_rating_declaration
618
- age_rating_delcaration.update(attributes: attributes)
617
+ age_rating_declaration = version.fetch_age_rating_declaration
618
+ age_rating_declaration.update(attributes: attributes)
619
619
  end
620
620
  end
621
621
  # rubocop:enable Metrics/ClassLength
@@ -229,3 +229,6 @@ If you are on multiple App Store Connect teams, iTunes Transporter may need a pr
229
229
  ## Use an Application Specific Password to upload
230
230
 
231
231
  _pilot_/`upload_to_testflight` can use an [Application Specific Password via the `FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD` envirionment variable](https://docs.fastlane.tools/best-practices/continuous-integration/#application-specific-passwords) to upload a binary if both the `skip_waiting_for_build_processing` and `apple_id` options are set. (If any of those are not set, it will use the normal Apple login process that might require 2FA authentication.)
232
+
233
+ ## Role for App Store Connect User
234
+ _pilot_/`upload_to_testflight` updates build information and testers after the build has finished processing. App Store Connect requires the "App Manager" or "Admin" role for your Apple account to update this information. The "Developer" role will allow builds to be uploaded but _will not_ allow updating of build information and testers.
@@ -72,13 +72,23 @@ module Fastlane
72
72
 
73
73
  UI.message('Querying request status')
74
74
 
75
+ # As of July 2020, the request UUID might not be available for polling yet which returns an error code
76
+ # This is now handled with the error_callback (which prevents an error from being raised)
77
+ # Catching this error allows for polling to continue until the notarization is complete
78
+ error = false
75
79
  notarization_info_response = Actions.sh(
76
80
  "xcrun altool --notarization-info #{notarization_request_id} -u #{apple_id_account.user} -p @env:FL_NOTARIZE_PASSWORD --output-format xml",
77
- log: verbose
81
+ log: verbose,
82
+ error_callback: lambda { |msg|
83
+ error = true
84
+ UI.error("Error polling for notarization info: #{msg}")
85
+ }
78
86
  )
79
87
 
80
- notarization_info_plist = Plist.parse_xml(notarization_info_response)
81
- notarization_info = notarization_info_plist['notarization-info']
88
+ unless error
89
+ notarization_info_plist = Plist.parse_xml(notarization_info_response)
90
+ notarization_info = notarization_info_plist['notarization-info']
91
+ end
82
92
  end
83
93
 
84
94
  log_url = notarization_info['LogFileURL']
@@ -51,6 +51,10 @@ module Fastlane
51
51
  command << "--use-modular-headers"
52
52
  end
53
53
 
54
+ if params[:synchronous]
55
+ command << "--synchronous"
56
+ end
57
+
54
58
  result = Actions.sh(command.join(' '))
55
59
  UI.success("Successfully pushed Podspec ⬆️ ")
56
60
  return result
@@ -127,7 +131,12 @@ module Fastlane
127
131
  description: "Use modular headers option during validation",
128
132
  optional: true,
129
133
  type: Boolean,
130
- env_name: "FL_POD_PUSH_USE_MODULAR_HEADERS")
134
+ env_name: "FL_POD_PUSH_USE_MODULAR_HEADERS"),
135
+ FastlaneCore::ConfigItem.new(key: :synchronous,
136
+ description: "If validation depends on other recently pushed pods, synchronize",
137
+ optional: true,
138
+ type: Boolean,
139
+ env_name: "FL_POD_PUSH_SYNCHRONOUS")
131
140
  ]
132
141
  end
133
142