fastlane 2.150.1 → 2.151.2

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +78 -78
  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/.submit_for_review.rb.swp +0 -0
  5. data/deliver/lib/deliver/app_screenshot.rb +4 -4
  6. data/deliver/lib/deliver/download_screenshots.rb +35 -28
  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 +5 -5
  11. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -0
  13. data/fastlane/lib/fastlane/actions/notarize.rb +13 -3
  14. data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
  15. data/fastlane/lib/fastlane/actions/resign.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/setup_ci.rb +5 -0
  17. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/slather.rb +7 -0
  20. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +10 -2
  21. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  22. data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/helper/.s3_client_helper.rb.swp} +0 -0
  23. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +28 -11
  24. data/fastlane/lib/fastlane/server/socket_server.rb +7 -1
  25. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  26. data/fastlane/lib/fastlane/version.rb +1 -1
  27. data/fastlane/swift/Actions.swift +1 -1
  28. data/fastlane/swift/ArgumentProcessor.swift +24 -24
  29. data/fastlane/swift/ControlCommand.swift +3 -3
  30. data/fastlane/swift/Deliverfile.swift +4 -8
  31. data/fastlane/swift/DeliverfileProtocol.swift +181 -182
  32. data/fastlane/swift/Fastlane.swift +2819 -2805
  33. data/fastlane/swift/Gymfile.swift +4 -8
  34. data/fastlane/swift/GymfileProtocol.swift +133 -134
  35. data/fastlane/swift/LaneFileProtocol.swift +17 -17
  36. data/fastlane/swift/Matchfile.swift +4 -8
  37. data/fastlane/swift/MatchfileProtocol.swift +115 -112
  38. data/fastlane/swift/Plugins.swift +1 -1
  39. data/fastlane/swift/Precheckfile.swift +4 -8
  40. data/fastlane/swift/PrecheckfileProtocol.swift +22 -23
  41. data/fastlane/swift/RubyCommand.swift +34 -37
  42. data/fastlane/swift/RubyCommandable.swift +3 -1
  43. data/fastlane/swift/Runner.swift +76 -69
  44. data/fastlane/swift/Scanfile.swift +4 -8
  45. data/fastlane/swift/ScanfileProtocol.swift +190 -191
  46. data/fastlane/swift/Screengrabfile.swift +4 -8
  47. data/fastlane/swift/ScreengrabfileProtocol.swift +67 -68
  48. data/fastlane/swift/Snapshotfile.swift +4 -8
  49. data/fastlane/swift/SnapshotfileProtocol.swift +127 -128
  50. data/fastlane/swift/SocketClient.swift +84 -90
  51. data/fastlane/swift/SocketResponse.swift +14 -14
  52. data/fastlane/swift/formatting/Brewfile +1 -0
  53. data/fastlane/swift/formatting/Brewfile.lock.json +39 -0
  54. data/fastlane/swift/formatting/Rakefile +18 -0
  55. data/fastlane/swift/main.swift +5 -6
  56. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +21 -10
  57. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  58. data/{fastlane/lib/fastlane/actions/.hockey.rb.swp → frameit/lib/frameit/.editor.rb.swp} +0 -0
  59. data/match/lib/assets/READMETemplate.md +5 -2
  60. data/match/lib/match/options.rb +4 -0
  61. data/match/lib/match/runner.rb +5 -4
  62. data/match/lib/match/storage/git_storage.rb +1 -1
  63. data/match/lib/match/storage/s3_storage.rb +25 -7
  64. data/sigh/lib/assets/resign.sh +18 -0
  65. data/spaceship/lib/spaceship/{connect_api/.DS_Store → .DS_Store} +0 -0
  66. data/spaceship/lib/spaceship/client.rb +1 -2
  67. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  68. data/spaceship/lib/spaceship/connect_api/client.rb +0 -1
  69. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
  70. data/spaceship/lib/spaceship/connect_api/models/app.rb +3 -3
  71. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +24 -1
  72. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +7 -6
  73. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +31 -2
  74. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +24 -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 +45 -0
  79. metadata +45 -51
  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/spaceship/lib/spaceship/babosa_fix.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d3237fc06a48b208196d7032e411bd13b963d7c26ddddbf0202e48f53fbd5c8
4
- data.tar.gz: db3869ebbf2d643634ef331898b3432b431fb01da909d3dac694d79cc0b4724d
3
+ metadata.gz: 464c3b50c55d5218b4d201e97b429d41186c250824e8dc4afb147035b22389bd
4
+ data.tar.gz: 60decb80f61f2690c2a21917dcffc03e5a09e15885abc7f26aa53d8db7bbf27f
5
5
  SHA512:
6
- metadata.gz: 7f17b8ef0ec7d70e3600ce0d3d9080083c16f347db7dd5d04b21a8c80552bc96ab07358f08a1e4369fb37e348bcef09ffdef5415c715128fe0b7b89d1cbb2b5a
7
- data.tar.gz: 30f46c293961f91d1d0ab85cfb6d06cf783b25c13e0ea307059013f20a906c349bbcda19e3e445ad20cfe0576d2c750f54ffef791f3c0c8c7a206ed23929134c
6
+ metadata.gz: 86eb7c64a1f3bae172c3741700305415337779bcf6fdfd0ad044de2fe1bcafb373579e229637837c90653237d469f1b896023dedb1e7c6cf6a6a04cdd23efe1c
7
+ data.tar.gz: 39dd908d4e3bb4d8d2bf7bbe569289967818059fdd990665762509f1d28bbdb500069cdddc56dc52889f0f1c58087cf89e906b1966c25748bc7c65c5e94e8184
data/README.md CHANGED
@@ -34,49 +34,75 @@ 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='daniel-jankowski'>
38
+ <a href='https://github.com/mollyIV'>
39
+ <img src='https://github.com/mollyIV.png?size=140'>
40
+ </a>
41
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
42
+ </td>
43
+ <td id='luka-mirosevic'>
44
+ <a href='https://github.com/lmirosevic'>
45
+ <img src='https://github.com/lmirosevic.png?size=140'>
46
+ </a>
47
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
48
+ </td>
37
49
  <td id='maksym-grebenets'>
38
50
  <a href='https://github.com/mgrebenets'>
39
51
  <img src='https://github.com/mgrebenets.png?size=140'>
40
52
  </a>
41
53
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
42
54
  </td>
43
- <td id='jérôme-lacoste'>
44
- <a href='https://github.com/lacostej'>
45
- <img src='https://github.com/lacostej.png?size=140'>
55
+ <td id='josh-holtz'>
56
+ <a href='https://github.com/joshdholtz'>
57
+ <img src='https://github.com/joshdholtz.png?size=140'>
46
58
  </a>
47
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
48
60
  </td>
61
+ <td id='joshua-liebowitz'>
62
+ <a href='https://github.com/taquitos'>
63
+ <img src='https://github.com/taquitos.png?size=140'>
64
+ </a>
65
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
66
+ </td>
67
+ </tr>
68
+ <tr>
49
69
  <td id='stefan-natchev'>
50
70
  <a href='https://github.com/snatchev'>
51
71
  <img src='https://github.com/snatchev.png?size=140'>
52
72
  </a>
53
73
  <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
54
74
  </td>
55
- <td id='max-ott'>
56
- <a href='https://github.com/max-ott'>
57
- <img src='https://github.com/max-ott.png?size=140'>
75
+ <td id='andrew-mcburney'>
76
+ <a href='https://github.com/armcburney'>
77
+ <img src='https://github.com/armcburney.png?size=140'>
58
78
  </a>
59
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
60
80
  </td>
61
- <td id='helmut-januschka'>
62
- <a href='https://github.com/hjanuschka'>
63
- <img src='https://github.com/hjanuschka.png?size=140'>
81
+ <td id='jorge-revuelta-h'>
82
+ <a href='https://github.com/minuscorp'>
83
+ <img src='https://github.com/minuscorp.png?size=140'>
64
84
  </a>
65
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
66
86
  </td>
67
- </tr>
68
- <tr>
69
- <td id='kohki-miki'>
70
- <a href='https://github.com/giginet'>
71
- <img src='https://github.com/giginet.png?size=140'>
87
+ <td id='jimmy-dee'>
88
+ <a href='https://github.com/jdee'>
89
+ <img src='https://github.com/jdee.png?size=140'>
72
90
  </a>
73
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
91
+ <h4 align='center'>Jimmy Dee</h4>
74
92
  </td>
75
- <td id='matthew-ellis'>
76
- <a href='https://github.com/matthewellis'>
77
- <img src='https://github.com/matthewellis.png?size=140'>
93
+ <td id='iulian-onofrei'>
94
+ <a href='https://github.com/revolter'>
95
+ <img src='https://github.com/revolter.png?size=140'>
78
96
  </a>
79
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
97
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
98
+ </td>
99
+ </tr>
100
+ <tr>
101
+ <td id='jan-piotrowski'>
102
+ <a href='https://github.com/janpio'>
103
+ <img src='https://github.com/janpio.png?size=140'>
104
+ </a>
105
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
80
106
  </td>
81
107
  <td id='danielle-tomlinson'>
82
108
  <a href='https://github.com/endocrimes'>
@@ -84,20 +110,12 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
84
110
  </a>
85
111
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
86
112
  </td>
87
- <td id='andrew-mcburney'>
88
- <a href='https://github.com/armcburney'>
89
- <img src='https://github.com/armcburney.png?size=140'>
90
- </a>
91
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
92
- </td>
93
- <td id='fumiya-nakamura'>
94
- <a href='https://github.com/nafu'>
95
- <img src='https://github.com/nafu.png?size=140'>
113
+ <td id='kohki-miki'>
114
+ <a href='https://github.com/giginet'>
115
+ <img src='https://github.com/giginet.png?size=140'>
96
116
  </a>
97
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
98
118
  </td>
99
- </tr>
100
- <tr>
101
119
  <td id='aaron-brager'>
102
120
  <a href='https://github.com/getaaron'>
103
121
  <img src='https://github.com/getaaron.png?size=140'>
@@ -110,70 +128,52 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
110
128
  </a>
111
129
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
112
130
  </td>
113
- <td id='jorge-revuelta-h'>
114
- <a href='https://github.com/minuscorp'>
115
- <img src='https://github.com/minuscorp.png?size=140'>
116
- </a>
117
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
118
- </td>
119
- <td id='felix-krause'>
120
- <a href='https://github.com/KrauseFx'>
121
- <img src='https://github.com/KrauseFx.png?size=140'>
122
- </a>
123
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
124
- </td>
125
- <td id='josh-holtz'>
126
- <a href='https://github.com/joshdholtz'>
127
- <img src='https://github.com/joshdholtz.png?size=140'>
128
- </a>
129
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
130
- </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='luka-mirosevic'>
134
- <a href='https://github.com/lmirosevic'>
135
- <img src='https://github.com/lmirosevic.png?size=140'>
133
+ <td id='jérôme-lacoste'>
134
+ <a href='https://github.com/lacostej'>
135
+ <img src='https://github.com/lacostej.png?size=140'>
136
136
  </a>
137
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
138
138
  </td>
139
- <td id='iulian-onofrei'>
140
- <a href='https://github.com/revolter'>
141
- <img src='https://github.com/revolter.png?size=140'>
139
+ <td id='fumiya-nakamura'>
140
+ <a href='https://github.com/nafu'>
141
+ <img src='https://github.com/nafu.png?size=140'>
142
142
  </a>
143
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
144
144
  </td>
145
- <td id='joshua-liebowitz'>
146
- <a href='https://github.com/taquitos'>
147
- <img src='https://github.com/taquitos.png?size=140'>
145
+ <td id='matthew-ellis'>
146
+ <a href='https://github.com/matthewellis'>
147
+ <img src='https://github.com/matthewellis.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
150
150
  </td>
151
- <td id='jimmy-dee'>
152
- <a href='https://github.com/jdee'>
153
- <img src='https://github.com/jdee.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'>
154
154
  </a>
155
- <h4 align='center'>Jimmy Dee</h4>
155
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
156
156
  </td>
157
- <td id='jan-piotrowski'>
158
- <a href='https://github.com/janpio'>
159
- <img src='https://github.com/janpio.png?size=140'>
157
+ <td id='helmut-januschka'>
158
+ <a href='https://github.com/hjanuschka'>
159
+ <img src='https://github.com/hjanuschka.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='daniel-jankowski'>
166
- <a href='https://github.com/mollyIV'>
167
- <img src='https://github.com/mollyIV.png?size=140'>
168
- </a>
169
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
170
- </td>
171
165
  <td id='olivier-halligon'>
172
166
  <a href='https://github.com/AliSoftware'>
173
167
  <img src='https://github.com/AliSoftware.png?size=140'>
174
168
  </a>
175
169
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
176
170
  </td>
171
+ <td id='max-ott'>
172
+ <a href='https://github.com/max-ott'>
173
+ <img src='https://github.com/max-ott.png?size=140'>
174
+ </a>
175
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
176
+ </td>
177
177
  </table>
178
178
 
179
179
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -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,
@@ -28,42 +28,49 @@ module Deliver
28
28
  end
29
29
 
30
30
  localizations = version.get_app_store_version_localizations
31
+ threads = []
31
32
  localizations.each do |localization|
32
- screenshot_sets = localization.get_app_screenshot_sets
33
- screenshot_sets.each do |screenshot_set|
34
- screenshot_set.app_screenshots.each_with_index do |screenshot, index|
35
- file_name = [index, screenshot_set.screenshot_display_type, index].join("_")
36
- original_file_extension = File.extname(screenshot.file_name).strip.downcase[1..-1]
37
- file_name += "." + original_file_extension
38
-
39
- url = screenshot.image_asset_url(type: original_file_extension)
40
- next if url.nil?
33
+ threads << Thread.new do
34
+ download_screenshots(folder_path, localization)
35
+ end
36
+ end
37
+ threads.each(&:join)
38
+ end
41
39
 
42
- language = localization.locale
40
+ def self.download_screenshots(folder_path, localization)
41
+ language = localization.locale
42
+ screenshot_sets = localization.get_app_screenshot_sets
43
+ screenshot_sets.each do |screenshot_set|
44
+ screenshot_set.app_screenshots.each_with_index do |screenshot, index|
45
+ file_name = [index, screenshot_set.screenshot_display_type, index].join("_")
46
+ original_file_extension = File.extname(screenshot.file_name).strip.downcase[1..-1]
47
+ file_name += "." + original_file_extension
43
48
 
44
- UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'")
49
+ url = screenshot.image_asset_url(type: original_file_extension)
50
+ next if url.nil?
45
51
 
46
- # If the screen shot is for an appleTV we need to store it in a way that we'll know it's an appleTV
47
- # screen shot later as the screen size is the same as an iPhone 6 Plus in landscape.
48
- if screenshot_set.apple_tv?
49
- containing_folder = File.join(folder_path, "appleTV", language)
50
- else
51
- containing_folder = File.join(folder_path, language)
52
- end
52
+ UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'")
53
53
 
54
- if screenshot_set.imessage?
55
- containing_folder = File.join(folder_path, "iMessage", language)
56
- end
54
+ # If the screen shot is for an appleTV we need to store it in a way that we'll know it's an appleTV
55
+ # screen shot later as the screen size is the same as an iPhone 6 Plus in landscape.
56
+ if screenshot_set.apple_tv?
57
+ containing_folder = File.join(folder_path, "appleTV", language)
58
+ else
59
+ containing_folder = File.join(folder_path, language)
60
+ end
57
61
 
58
- begin
59
- FileUtils.mkdir_p(containing_folder)
60
- rescue
61
- # if it's already there
62
- end
62
+ if screenshot_set.imessage?
63
+ containing_folder = File.join(folder_path, "iMessage", language)
64
+ end
63
65
 
64
- path = File.join(containing_folder, file_name)
65
- File.binwrite(path, open(url).read)
66
+ begin
67
+ FileUtils.mkdir_p(containing_folder)
68
+ rescue
69
+ # if it's already there
66
70
  end
71
+
72
+ path = File.join(containing_folder, file_name)
73
+ File.binwrite(path, open(url).read)
67
74
  end
68
75
  end
69
76
  end
@@ -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)
@@ -271,7 +271,7 @@ module Deliver
271
271
  next if k.nil? || v.nil?
272
272
  next if k == v
273
273
  has_mapped_values = true
274
- UI.deprecated("Category '#{k}' from iTunesConnect as been deprecated. Please replace with '#{v}'")
274
+ UI.deprecated("Category '#{k}' from iTunesConnect has been deprecated. Please replace with '#{v}'")
275
275
  end
276
276
  UI.deprecated("You can find more info at https://docs.fastlane.tools/actions/deliver/#reference") if has_mapped_values
277
277
 
@@ -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
@@ -610,12 +610,12 @@ module Deliver
610
610
  next if k.nil? || v.nil?
611
611
  next if k == v
612
612
  has_mapped_values = true
613
- UI.deprecated("Age rating '#{k}' from iTunesConnect as been deprecated. Please replace with '#{v}'")
613
+ UI.deprecated("Age rating '#{k}' from iTunesConnect has been deprecated. Please replace with '#{v}'")
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