fastlane 2.150.2 → 2.152.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -84
  3. data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
  4. data/deliver/lib/deliver/app_screenshot.rb +4 -4
  5. data/deliver/lib/deliver/download_screenshots.rb +35 -28
  6. data/deliver/lib/deliver/options.rb +8 -2
  7. data/deliver/lib/deliver/submit_for_review.rb +10 -10
  8. data/deliver/lib/deliver/upload_metadata.rb +9 -12
  9. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -0
  11. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
  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/upload_symbols_to_crashlytics.rb +10 -2
  19. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
  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 +2825 -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 +21 -10
  55. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  56. data/match/lib/assets/READMETemplate.md +5 -2
  57. data/match/lib/match/options.rb +4 -0
  58. data/match/lib/match/runner.rb +5 -4
  59. data/match/lib/match/storage/git_storage.rb +1 -1
  60. data/match/lib/match/storage/s3_storage.rb +25 -7
  61. data/pilot/lib/pilot/options.rb +6 -0
  62. data/sigh/lib/assets/resign.sh +18 -0
  63. data/spaceship/lib/spaceship/client.rb +1 -2
  64. data/spaceship/lib/spaceship/connect_api/client.rb +0 -1
  65. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
  66. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +4 -4
  67. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  68. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +11 -1
  69. metadata +36 -46
  70. data/deliver/lib/deliver/.download_screenshots.rb.swp +0 -0
  71. data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
  72. data/spaceship/lib/spaceship/babosa_fix.rb +0 -30
  73. data/spaceship/lib/spaceship/connect_api/.file_uploader.rb.swp +0 -0
  74. data/spaceship/lib/spaceship/connect_api/models/.app_screenshot.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87ea2530852ddd4a16e80f9935752a54ce909b00d0c13960f5c1d57b41e40891
4
- data.tar.gz: 126a9a64389074d2f34fde46baf7687574e91f9090f1d318f4583552d642e847
3
+ metadata.gz: d0172d03e9f2dcbb76ce58ce0064caa8e107e0aeba78f63376ed1d9eb3a9e41e
4
+ data.tar.gz: fcc74d8f86f188653c4395c50c4da7ed5660d6c065816779af45d100855e68ea
5
5
  SHA512:
6
- metadata.gz: f8b50d9557dbd71db173be7d854bc511f161f00e7a6115571b99dee6029806b3280d6386c19b0814a7175bd486f3fa46e0d9786a316102a0816c55e4315a5da5
7
- data.tar.gz: 6c86f8a577d56a9a859a94765f51704ab80b2003facfb9b4baf355f693012d3a9b5f02def5b25fefa41750bb6bc8a1813d8a9faf73b19f541b1c4af626249fbf
6
+ metadata.gz: 885d5bec8f98d24a8cfa4091d956fbba3a5e13fb09edaa76549608aacc90568ac698c1143bfa041f310702a31d8080170afd804b2d98b1af18f75bff657fd66d
7
+ data.tar.gz: e2c9b1dc7e9830a79d3ee841f377dfdf541680f8efa9ee2df9867b46459530856cc07c0e99652749b9af9fa4571688e895e19f2af9692e4a188b74ee8f69f1fa
data/README.md CHANGED
@@ -40,69 +40,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
40
40
  </a>
41
41
  <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
42
42
  </td>
43
- <td id='jan-piotrowski'>
44
- <a href='https://github.com/janpio'>
45
- <img src='https://github.com/janpio.png?size=140'>
43
+ <td id='jimmy-dee'>
44
+ <a href='https://github.com/jdee'>
45
+ <img src='https://github.com/jdee.png?size=140'>
46
46
  </a>
47
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
47
+ <h4 align='center'>Jimmy Dee</h4>
48
48
  </td>
49
- <td id='jérôme-lacoste'>
50
- <a href='https://github.com/lacostej'>
51
- <img src='https://github.com/lacostej.png?size=140'>
49
+ <td id='kohki-miki'>
50
+ <a href='https://github.com/giginet'>
51
+ <img src='https://github.com/giginet.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
54
54
  </td>
55
- <td id='stefan-natchev'>
56
- <a href='https://github.com/snatchev'>
57
- <img src='https://github.com/snatchev.png?size=140'>
55
+ <td id='olivier-halligon'>
56
+ <a href='https://github.com/AliSoftware'>
57
+ <img src='https://github.com/AliSoftware.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
60
60
  </td>
61
- <td id='andrew-mcburney'>
62
- <a href='https://github.com/armcburney'>
63
- <img src='https://github.com/armcburney.png?size=140'>
61
+ <td id='jan-piotrowski'>
62
+ <a href='https://github.com/janpio'>
63
+ <img src='https://github.com/janpio.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='manu-wallner'>
70
- <a href='https://github.com/milch'>
71
- <img src='https://github.com/milch.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
74
- </td>
75
- <td id='danielle-tomlinson'>
76
- <a href='https://github.com/endocrimes'>
77
- <img src='https://github.com/endocrimes.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
80
- </td>
81
- <td id='fumiya-nakamura'>
82
- <a href='https://github.com/nafu'>
83
- <img src='https://github.com/nafu.png?size=140'>
84
- </a>
85
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
86
- </td>
87
- <td id='jimmy-dee'>
88
- <a href='https://github.com/jdee'>
89
- <img src='https://github.com/jdee.png?size=140'>
90
- </a>
91
- <h4 align='center'>Jimmy Dee</h4>
92
- </td>
93
- <td id='joshua-liebowitz'>
94
- <a href='https://github.com/taquitos'>
95
- <img src='https://github.com/taquitos.png?size=140'>
69
+ <td id='daniel-jankowski'>
70
+ <a href='https://github.com/mollyIV'>
71
+ <img src='https://github.com/mollyIV.png?size=140'>
96
72
  </a>
97
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
98
74
  </td>
99
- </tr>
100
- <tr>
101
- <td id='aaron-brager'>
102
- <a href='https://github.com/getaaron'>
103
- <img src='https://github.com/getaaron.png?size=140'>
75
+ <td id='matthew-ellis'>
76
+ <a href='https://github.com/matthewellis'>
77
+ <img src='https://github.com/matthewellis.png?size=140'>
104
78
  </a>
105
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
106
80
  </td>
107
81
  <td id='helmut-januschka'>
108
82
  <a href='https://github.com/hjanuschka'>
@@ -116,43 +90,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
116
90
  </a>
117
91
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
118
92
  </td>
119
- <td id='jorge-revuelta-h'>
120
- <a href='https://github.com/minuscorp'>
121
- <img src='https://github.com/minuscorp.png?size=140'>
122
- </a>
123
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
124
- </td>
125
- <td id='maksym-grebenets'>
126
- <a href='https://github.com/mgrebenets'>
127
- <img src='https://github.com/mgrebenets.png?size=140'>
93
+ <td id='fumiya-nakamura'>
94
+ <a href='https://github.com/nafu'>
95
+ <img src='https://github.com/nafu.png?size=140'>
128
96
  </a>
129
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
97
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
130
98
  </td>
131
99
  </tr>
132
100
  <tr>
133
- <td id='olivier-halligon'>
134
- <a href='https://github.com/AliSoftware'>
135
- <img src='https://github.com/AliSoftware.png?size=140'>
101
+ <td id='andrew-mcburney'>
102
+ <a href='https://github.com/armcburney'>
103
+ <img src='https://github.com/armcburney.png?size=140'>
136
104
  </a>
137
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
138
106
  </td>
139
- <td id='matthew-ellis'>
140
- <a href='https://github.com/matthewellis'>
141
- <img src='https://github.com/matthewellis.png?size=140'>
107
+ <td id='iulian-onofrei'>
108
+ <a href='https://github.com/revolter'>
109
+ <img src='https://github.com/revolter.png?size=140'>
142
110
  </a>
143
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
144
112
  </td>
145
- <td id='daniel-jankowski'>
146
- <a href='https://github.com/mollyIV'>
147
- <img src='https://github.com/mollyIV.png?size=140'>
113
+ <td id='luka-mirosevic'>
114
+ <a href='https://github.com/lmirosevic'>
115
+ <img src='https://github.com/lmirosevic.png?size=140'>
148
116
  </a>
149
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
150
118
  </td>
151
- <td id='kohki-miki'>
152
- <a href='https://github.com/giginet'>
153
- <img src='https://github.com/giginet.png?size=140'>
119
+ <td id='stefan-natchev'>
120
+ <a href='https://github.com/snatchev'>
121
+ <img src='https://github.com/snatchev.png?size=140'>
154
122
  </a>
155
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
156
124
  </td>
157
125
  <td id='felix-krause'>
158
126
  <a href='https://github.com/KrauseFx'>
@@ -162,17 +130,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
162
130
  </td>
163
131
  </tr>
164
132
  <tr>
165
- <td id='luka-mirosevic'>
166
- <a href='https://github.com/lmirosevic'>
167
- <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'>
168
136
  </a>
169
- <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>
170
138
  </td>
171
- <td id='iulian-onofrei'>
172
- <a href='https://github.com/revolter'>
173
- <img src='https://github.com/revolter.png?size=140'>
139
+ <td id='joshua-liebowitz'>
140
+ <a href='https://github.com/taquitos'>
141
+ <img src='https://github.com/taquitos.png?size=140'>
174
142
  </a>
175
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
144
+ </td>
145
+ <td id='danielle-tomlinson'>
146
+ <a href='https://github.com/endocrimes'>
147
+ <img src='https://github.com/endocrimes.png?size=140'>
148
+ </a>
149
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
150
+ </td>
151
+ <td id='manu-wallner'>
152
+ <a href='https://github.com/milch'>
153
+ <img src='https://github.com/milch.png?size=140'>
154
+ </a>
155
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
156
+ </td>
157
+ <td id='aaron-brager'>
158
+ <a href='https://github.com/getaaron'>
159
+ <img src='https://github.com/getaaron.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
162
+ </td>
163
+ </tr>
164
+ <tr>
165
+ <td id='jorge-revuelta-h'>
166
+ <a href='https://github.com/minuscorp'>
167
+ <img src='https://github.com/minuscorp.png?size=140'>
168
+ </a>
169
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
170
+ </td>
171
+ <td id='maksym-grebenets'>
172
+ <a href='https://github.com/mgrebenets'>
173
+ <img src='https://github.com/mgrebenets.png?size=140'>
174
+ </a>
175
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</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,
@@ -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",
@@ -286,7 +292,7 @@ module Deliver
286
292
  deprecated: "Removed after the migration to the new App Store Connect API in June 2020",
287
293
  is_string: false,
288
294
  type: Array,
289
- default_value: []),
295
+ optional: true),
290
296
 
291
297
  # Non Localised
292
298
  FastlaneCore::ConfigItem.new(key: :app_icon,
@@ -120,10 +120,10 @@ module Deliver
120
120
  " Example: submission_information: { add_id_info_uses_idfa: false }",
121
121
  " Example: submission_information: {",
122
122
  " add_id_info_uses_idfa: true,",
123
- " add_id_info_limits_tracking: false,",
124
123
  " add_id_info_serves_ads: false,",
125
- " add_id_info_uses_idfa: false,",
126
- " add_id_info_tracks_install: false",
124
+ " add_id_info_tracks_install: true,",
125
+ " add_id_info_tracks_action: true,",
126
+ " add_id_info_limits_tracking: true",
127
127
  " }",
128
128
  " Example CLI:",
129
129
  " --submission_information \"{\\\"add_id_info_uses_idfa\\\": false}\""
@@ -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)
@@ -175,6 +175,11 @@ module Deliver
175
175
  end
176
176
  non_localized_version_attributes['releaseType'] = release_type
177
177
 
178
+ # Update app store version
179
+ # This needs to happen before updating localizations (https://openradar.appspot.com/radar?id=4925914991296512)
180
+ UI.message("Uploading metadata to App Store Connect for version")
181
+ version.update(attributes: non_localized_version_attributes)
182
+
178
183
  # Update app store version localizations
179
184
  app_store_version_localizations.each do |app_store_version_localization|
180
185
  attributes = localized_version_attributes_by_locale[app_store_version_localization.locale]
@@ -193,10 +198,6 @@ module Deliver
193
198
  end
194
199
  end
195
200
 
196
- # Update app store version
197
- UI.message("Uploading metadata to App Store Connect for version")
198
- version.update(attributes: non_localized_version_attributes)
199
-
200
201
  # Update categories
201
202
  app_info = app.fetch_edit_app_info
202
203
  if app_info
@@ -271,7 +272,7 @@ module Deliver
271
272
  next if k.nil? || v.nil?
272
273
  next if k == v
273
274
  has_mapped_values = true
274
- UI.deprecated("Category '#{k}' from iTunesConnect as been deprecated. Please replace with '#{v}'")
275
+ UI.deprecated("Category '#{k}' from iTunesConnect has been deprecated. Please replace with '#{v}'")
275
276
  end
276
277
  UI.deprecated("You can find more info at https://docs.fastlane.tools/actions/deliver/#reference") if has_mapped_values
277
278
 
@@ -330,10 +331,6 @@ module Deliver
330
331
  seconds_in_hour = 60 * 60
331
332
  time_in_s_to_hour = (time_in_s / seconds_in_hour).to_i * seconds_in_hour
332
333
 
333
- # Remove minute offset if timezone has minute offset
334
- minute_offset = Time.now.utc_offset % seconds_in_hour
335
- time_in_s_to_hour -= minute_offset
336
-
337
334
  return Time.at(time_in_s_to_hour).utc.strftime("%Y-%m-%dT%H:%M:%S%:z")
338
335
  end
339
336
 
@@ -614,12 +611,12 @@ module Deliver
614
611
  next if k.nil? || v.nil?
615
612
  next if k == v
616
613
  has_mapped_values = true
617
- UI.deprecated("Age rating '#{k}' from iTunesConnect as been deprecated. Please replace with '#{v}'")
614
+ UI.deprecated("Age rating '#{k}' from iTunesConnect has been deprecated. Please replace with '#{v}'")
618
615
  end
619
616
  UI.deprecated("You can find more info at https://docs.fastlane.tools/actions/deliver/#reference") if has_mapped_values
620
617
 
621
- age_rating_delcaration = version.fetch_age_rating_declaration
622
- age_rating_delcaration.update(attributes: attributes)
618
+ age_rating_declaration = version.fetch_age_rating_declaration
619
+ age_rating_declaration.update(attributes: attributes)
623
620
  end
624
621
  end
625
622
  # rubocop:enable Metrics/ClassLength