fastlane 2.150.3 → 2.153.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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +86 -86
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -1
  4. data/deliver/lib/deliver/commands_generator.rb +7 -4
  5. data/deliver/lib/deliver/detect_values.rb +9 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +36 -31
  7. data/deliver/lib/deliver/options.rb +8 -2
  8. data/deliver/lib/deliver/runner.rb +5 -10
  9. data/deliver/lib/deliver/setup.rb +94 -3
  10. data/deliver/lib/deliver/submit_for_review.rb +11 -13
  11. data/deliver/lib/deliver/upload_metadata.rb +34 -30
  12. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  13. data/deliver/lib/deliver/upload_screenshots.rb +76 -45
  14. data/{deliver/lib/deliver/.download_screenshots.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
  15. data/{spaceship/lib/spaceship/connect_api/.file_uploader.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
  16. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  17. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  18. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -0
  19. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  20. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  21. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
  22. data/fastlane/lib/fastlane/actions/notarize.rb +13 -3
  23. data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
  24. data/fastlane/lib/fastlane/actions/resign.rb +1 -1
  25. data/fastlane/lib/fastlane/actions/setup_ci.rb +5 -0
  26. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +10 -2
  29. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
  30. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  31. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +28 -11
  32. data/fastlane/lib/fastlane/runner.rb +3 -1
  33. data/fastlane/lib/fastlane/server/socket_server.rb +7 -1
  34. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  35. data/fastlane/lib/fastlane/version.rb +1 -1
  36. data/fastlane/swift/Actions.swift +1 -1
  37. data/fastlane/swift/ArgumentProcessor.swift +24 -24
  38. data/fastlane/swift/ControlCommand.swift +3 -3
  39. data/fastlane/swift/Deliverfile.swift +4 -8
  40. data/fastlane/swift/DeliverfileProtocol.swift +181 -182
  41. data/fastlane/swift/Fastlane.swift +2829 -2806
  42. data/fastlane/swift/Gymfile.swift +4 -8
  43. data/fastlane/swift/GymfileProtocol.swift +133 -134
  44. data/fastlane/swift/LaneFileProtocol.swift +17 -17
  45. data/fastlane/swift/Matchfile.swift +4 -8
  46. data/fastlane/swift/MatchfileProtocol.swift +115 -112
  47. data/fastlane/swift/Plugins.swift +1 -1
  48. data/fastlane/swift/Precheckfile.swift +4 -8
  49. data/fastlane/swift/PrecheckfileProtocol.swift +22 -23
  50. data/fastlane/swift/RubyCommand.swift +34 -37
  51. data/fastlane/swift/RubyCommandable.swift +3 -1
  52. data/fastlane/swift/Runner.swift +76 -69
  53. data/fastlane/swift/Scanfile.swift +4 -8
  54. data/fastlane/swift/ScanfileProtocol.swift +190 -191
  55. data/fastlane/swift/Screengrabfile.swift +4 -8
  56. data/fastlane/swift/ScreengrabfileProtocol.swift +67 -68
  57. data/fastlane/swift/Snapshotfile.swift +4 -8
  58. data/fastlane/swift/SnapshotfileProtocol.swift +127 -128
  59. data/fastlane/swift/SocketClient.swift +84 -90
  60. data/fastlane/swift/SocketResponse.swift +14 -14
  61. data/fastlane/swift/formatting/Brewfile +1 -0
  62. data/fastlane/swift/formatting/Brewfile.lock.json +39 -0
  63. data/fastlane/swift/formatting/Rakefile +18 -0
  64. data/fastlane/swift/main.swift +5 -6
  65. data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -6
  66. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +21 -10
  67. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  68. data/frameit/lib/frameit/editor.rb +8 -5
  69. data/match/lib/assets/READMETemplate.md +5 -2
  70. data/match/lib/match/options.rb +4 -0
  71. data/match/lib/match/runner.rb +5 -4
  72. data/match/lib/match/storage/git_storage.rb +1 -1
  73. data/match/lib/match/storage/s3_storage.rb +25 -7
  74. data/pilot/lib/pilot/options.rb +6 -0
  75. data/scan/lib/scan/runner.rb +19 -6
  76. data/sigh/lib/assets/resign.sh +18 -0
  77. data/spaceship/lib/spaceship/client.rb +1 -2
  78. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  79. data/spaceship/lib/spaceship/connect_api/client.rb +2 -3
  80. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
  81. data/spaceship/lib/spaceship/connect_api/model.rb +10 -0
  82. data/spaceship/lib/spaceship/connect_api/models/.app_screenshot.rb.swp +0 -0
  83. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  84. data/spaceship/lib/spaceship/connect_api/models/app.rb +40 -2
  85. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  86. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +5 -4
  87. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  88. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  89. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +11 -1
  90. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  91. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  92. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  93. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  94. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  95. metadata +49 -84
  96. data/deliver/lib/deliver/.commands_generator.rb.swp +0 -0
  97. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  98. data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
  99. data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
  100. data/spaceship/lib/spaceship/babosa_fix.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef23a0fed00e3ec93bc286b3f34b22302da611a889c315013c63d929f218ecd7
4
- data.tar.gz: e9155805e43cb051508414d3cf19db7b16c50fc5a1e280e944a5416a98dba32d
3
+ metadata.gz: '0738d9e2b7948bc5c029fff4cc5314accc0285c7e9fa0652c7526c58d4512dbd'
4
+ data.tar.gz: 2999ba6d7c1c5784969196e9d2efe9da82561c74ac218af83e5533a7c28babaa
5
5
  SHA512:
6
- metadata.gz: 7b5fc44bdda30345ee8f9034e3fadaf03db8689a032a9982db7afa979e1d148becdad574dd202b81a682d98a1a712f15a88575e31c392102e6287d8b0639c04c
7
- data.tar.gz: 3019b6947b830e43e7214fcf0caf375e4f48d874bb168f52c146988dc86973e8cd7425bee83847808958c698c7eca3a9b8147ecc70092c444b10783e4a189f70
6
+ metadata.gz: 94463ea90394a490270ec45cd7a47123cd8da45f7aa1649f302fdabc3e315864bd1366861730ca57a31748f7bd90cc39a5f6d61c67a7ecfb29eccb0be99f457e
7
+ data.tar.gz: a23b7a7e5e74c7301222b9700b8cc6b73124842530fc417987eb95b62ae7d0be65c88b190f0d22c5b847bbb9ed55ad413d1f25c6eb3a20b011ade15af119088b
data/README.md CHANGED
@@ -34,55 +34,61 @@ 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='matthew-ellis'>
38
- <a href='https://github.com/matthewellis'>
39
- <img src='https://github.com/matthewellis.png?size=140'>
37
+ <td id='andrew-mcburney'>
38
+ <a href='https://github.com/armcburney'>
39
+ <img src='https://github.com/armcburney.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
42
42
  </td>
43
- <td id='jimmy-dee'>
44
- <a href='https://github.com/jdee'>
45
- <img src='https://github.com/jdee.png?size=140'>
43
+ <td id='josh-holtz'>
44
+ <a href='https://github.com/joshdholtz'>
45
+ <img src='https://github.com/joshdholtz.png?size=140'>
46
46
  </a>
47
- <h4 align='center'>Jimmy Dee</h4>
47
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
48
48
  </td>
49
- <td id='luka-mirosevic'>
50
- <a href='https://github.com/lmirosevic'>
51
- <img src='https://github.com/lmirosevic.png?size=140'>
49
+ <td id='daniel-jankowski'>
50
+ <a href='https://github.com/mollyIV'>
51
+ <img src='https://github.com/mollyIV.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
54
54
  </td>
55
- <td id='jorge-revuelta-h'>
56
- <a href='https://github.com/minuscorp'>
57
- <img src='https://github.com/minuscorp.png?size=140'>
55
+ <td id='max-ott'>
56
+ <a href='https://github.com/max-ott'>
57
+ <img src='https://github.com/max-ott.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
60
60
  </td>
61
- <td id='jérôme-lacoste'>
62
- <a href='https://github.com/lacostej'>
63
- <img src='https://github.com/lacostej.png?size=140'>
61
+ <td id='helmut-januschka'>
62
+ <a href='https://github.com/hjanuschka'>
63
+ <img src='https://github.com/hjanuschka.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='stefan-natchev'>
70
- <a href='https://github.com/snatchev'>
71
- <img src='https://github.com/snatchev.png?size=140'>
69
+ <td id='luka-mirosevic'>
70
+ <a href='https://github.com/lmirosevic'>
71
+ <img src='https://github.com/lmirosevic.png?size=140'>
72
72
  </a>
73
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
74
74
  </td>
75
- <td id='daniel-jankowski'>
76
- <a href='https://github.com/mollyIV'>
77
- <img src='https://github.com/mollyIV.png?size=140'>
75
+ <td id='fumiya-nakamura'>
76
+ <a href='https://github.com/nafu'>
77
+ <img src='https://github.com/nafu.png?size=140'>
78
78
  </a>
79
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
80
80
  </td>
81
- <td id='iulian-onofrei'>
82
- <a href='https://github.com/revolter'>
83
- <img src='https://github.com/revolter.png?size=140'>
81
+ <td id='olivier-halligon'>
82
+ <a href='https://github.com/AliSoftware'>
83
+ <img src='https://github.com/AliSoftware.png?size=140'>
84
84
  </a>
85
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
86
+ </td>
87
+ <td id='kohki-miki'>
88
+ <a href='https://github.com/giginet'>
89
+ <img src='https://github.com/giginet.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
86
92
  </td>
87
93
  <td id='felix-krause'>
88
94
  <a href='https://github.com/KrauseFx'>
@@ -90,89 +96,83 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
90
96
  </a>
91
97
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
92
98
  </td>
93
- <td id='maksym-grebenets'>
94
- <a href='https://github.com/mgrebenets'>
95
- <img src='https://github.com/mgrebenets.png?size=140'>
96
- </a>
97
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
98
- </td>
99
99
  </tr>
100
100
  <tr>
101
- <td id='helmut-januschka'>
102
- <a href='https://github.com/hjanuschka'>
103
- <img src='https://github.com/hjanuschka.png?size=140'>
101
+ <td id='stefan-natchev'>
102
+ <a href='https://github.com/snatchev'>
103
+ <img src='https://github.com/snatchev.png?size=140'>
104
104
  </a>
105
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
106
106
  </td>
107
- <td id='joshua-liebowitz'>
108
- <a href='https://github.com/taquitos'>
109
- <img src='https://github.com/taquitos.png?size=140'>
107
+ <td id='jorge-revuelta-h'>
108
+ <a href='https://github.com/minuscorp'>
109
+ <img src='https://github.com/minuscorp.png?size=140'>
110
110
  </a>
111
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
112
112
  </td>
113
- <td id='olivier-halligon'>
114
- <a href='https://github.com/AliSoftware'>
115
- <img src='https://github.com/AliSoftware.png?size=140'>
113
+ <td id='jimmy-dee'>
114
+ <a href='https://github.com/jdee'>
115
+ <img src='https://github.com/jdee.png?size=140'>
116
116
  </a>
117
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
117
+ <h4 align='center'>Jimmy Dee</h4>
118
118
  </td>
119
- <td id='fumiya-nakamura'>
120
- <a href='https://github.com/nafu'>
121
- <img src='https://github.com/nafu.png?size=140'>
119
+ <td id='danielle-tomlinson'>
120
+ <a href='https://github.com/endocrimes'>
121
+ <img src='https://github.com/endocrimes.png?size=140'>
122
122
  </a>
123
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
124
124
  </td>
125
- <td id='aaron-brager'>
126
- <a href='https://github.com/getaaron'>
127
- <img src='https://github.com/getaaron.png?size=140'>
125
+ <td id='matthew-ellis'>
126
+ <a href='https://github.com/matthewellis'>
127
+ <img src='https://github.com/matthewellis.png?size=140'>
128
128
  </a>
129
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
130
130
  </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='josh-holtz'>
134
- <a href='https://github.com/joshdholtz'>
135
- <img src='https://github.com/joshdholtz.png?size=140'>
133
+ <td id='manu-wallner'>
134
+ <a href='https://github.com/milch'>
135
+ <img src='https://github.com/milch.png?size=140'>
136
136
  </a>
137
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
138
138
  </td>
139
- <td id='danielle-tomlinson'>
140
- <a href='https://github.com/endocrimes'>
141
- <img src='https://github.com/endocrimes.png?size=140'>
139
+ <td id='jérôme-lacoste'>
140
+ <a href='https://github.com/lacostej'>
141
+ <img src='https://github.com/lacostej.png?size=140'>
142
142
  </a>
143
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
144
144
  </td>
145
- <td id='max-ott'>
146
- <a href='https://github.com/max-ott'>
147
- <img src='https://github.com/max-ott.png?size=140'>
145
+ <td id='iulian-onofrei'>
146
+ <a href='https://github.com/revolter'>
147
+ <img src='https://github.com/revolter.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
150
150
  </td>
151
- <td id='andrew-mcburney'>
152
- <a href='https://github.com/armcburney'>
153
- <img src='https://github.com/armcburney.png?size=140'>
151
+ <td id='maksym-grebenets'>
152
+ <a href='https://github.com/mgrebenets'>
153
+ <img src='https://github.com/mgrebenets.png?size=140'>
154
154
  </a>
155
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</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='joshua-liebowitz'>
158
+ <a href='https://github.com/taquitos'>
159
+ <img src='https://github.com/taquitos.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/taquitos'>Joshua Liebowitz</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='manu-wallner'>
166
- <a href='https://github.com/milch'>
167
- <img src='https://github.com/milch.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/acrooow'>Manu Wallner</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
170
  </td>
171
- <td id='kohki-miki'>
172
- <a href='https://github.com/giginet'>
173
- <img src='https://github.com/giginet.png?size=140'>
171
+ <td id='jan-piotrowski'>
172
+ <a href='https://github.com/janpio'>
173
+ <img src='https://github.com/janpio.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -120,7 +120,7 @@ module Deliver
120
120
  ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
121
121
  ScreenSize::IOS_APPLE_WATCH => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_3,
122
122
  ScreenSize::IOS_APPLE_WATCH_SERIES4 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_4,
123
- # ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::
123
+ ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_APPLE_TV
124
124
  }
125
125
  return matching[self.screen_size]
126
126
  end
@@ -40,6 +40,7 @@ module Deliver
40
40
  res
41
41
  end
42
42
 
43
+ # rubocop:disable Metrics/PerceivedComplexity
43
44
  def run
44
45
  program :name, 'deliver'
45
46
  program :version, Fastlane::VERSION
@@ -166,15 +167,17 @@ module Deliver
166
167
  return 0 unless res
167
168
 
168
169
  require 'deliver/setup'
169
- v = options[:app].latest_version
170
+ app = options[:app]
171
+ platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
172
+ v = app.get_latest_app_store_version(platform: platform)
170
173
  if options[:app_version].to_s.length > 0
171
- v = options[:app].live_version if v.version != options[:app_version]
172
- if v.version != options[:app_version]
174
+ v = app.get_live_app_store_version(platform: platform) if v.version_string != options[:app_version]
175
+ if v.nil? || v.version_string != options[:app_version]
173
176
  raise "Neither the current nor live version match specified app_version \"#{options[:app_version]}\""
174
177
  end
175
178
  end
176
179
 
177
- Deliver::Setup.new.generate_metadata_files(v, path)
180
+ Deliver::Setup.new.generate_metadata_files(app, v, path)
178
181
  end
179
182
  end
180
183
 
@@ -36,9 +36,15 @@ module Deliver
36
36
  end
37
37
 
38
38
  def find_app(options)
39
- search_by = options[:app_identifier]
40
- search_by = options[:app] if search_by.to_s.length == 0
41
- app = Spaceship::Tunes::Application.find(search_by, mac: options[:platform] == "osx")
39
+ app_identifier = options[:app_identifier]
40
+ app_id = options[:app] if app_identifier.to_s.empty?
41
+
42
+ if !app_identifier.to_s.empty?
43
+ app = Spaceship::ConnectAPI::App.find(app_identifier)
44
+ elsif !app_id.kind_of?(Spaceship::ConnectAPI::App) && !app_id.to_s.empty?
45
+ app = Spaceship::ConnectAPI::App.get(app_id: app_id)
46
+ end
47
+
42
48
  if app
43
49
  options[:app] = app
44
50
  else
@@ -14,9 +14,7 @@ module Deliver
14
14
  end
15
15
 
16
16
  def self.download(options, folder_path)
17
- legacy_app = options[:app]
18
- app_id = legacy_app.apple_id
19
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
17
+ app = options[:app]
20
18
 
21
19
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
22
20
  if options[:use_live_version]
@@ -28,42 +26,49 @@ module Deliver
28
26
  end
29
27
 
30
28
  localizations = version.get_app_store_version_localizations
29
+ threads = []
31
30
  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?
31
+ threads << Thread.new do
32
+ download_screenshots(folder_path, localization)
33
+ end
34
+ end
35
+ threads.each(&:join)
36
+ end
41
37
 
42
- language = localization.locale
38
+ def self.download_screenshots(folder_path, localization)
39
+ language = localization.locale
40
+ screenshot_sets = localization.get_app_screenshot_sets
41
+ screenshot_sets.each do |screenshot_set|
42
+ screenshot_set.app_screenshots.each_with_index do |screenshot, index|
43
+ file_name = [index, screenshot_set.screenshot_display_type, index].join("_")
44
+ original_file_extension = File.extname(screenshot.file_name).strip.downcase[1..-1]
45
+ file_name += "." + original_file_extension
43
46
 
44
- UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'")
47
+ url = screenshot.image_asset_url(type: original_file_extension)
48
+ next if url.nil?
45
49
 
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
50
+ UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'")
53
51
 
54
- if screenshot_set.imessage?
55
- containing_folder = File.join(folder_path, "iMessage", language)
56
- end
52
+ # If the screen shot is for an appleTV we need to store it in a way that we'll know it's an appleTV
53
+ # screen shot later as the screen size is the same as an iPhone 6 Plus in landscape.
54
+ if screenshot_set.apple_tv?
55
+ containing_folder = File.join(folder_path, "appleTV", language)
56
+ else
57
+ containing_folder = File.join(folder_path, language)
58
+ end
57
59
 
58
- begin
59
- FileUtils.mkdir_p(containing_folder)
60
- rescue
61
- # if it's already there
62
- end
60
+ if screenshot_set.imessage?
61
+ containing_folder = File.join(folder_path, "iMessage", language)
62
+ end
63
63
 
64
- path = File.join(containing_folder, file_name)
65
- File.binwrite(path, open(url).read)
64
+ begin
65
+ FileUtils.mkdir_p(containing_folder)
66
+ rescue
67
+ # if it's already there
66
68
  end
69
+
70
+ path = File.join(containing_folder, file_name)
71
+ File.binwrite(path, open(url).read)
67
72
  end
68
73
  end
69
74
  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,
@@ -91,9 +91,7 @@ module Deliver
91
91
  app_version = options[:app_version]
92
92
  UI.message("Making sure the latest version on App Store Connect matches '#{app_version}'...")
93
93
 
94
- legacy_app = options[:app]
95
- app_id = legacy_app.apple_id
96
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
94
+ app = options[:app]
97
95
 
98
96
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
99
97
  changed = app.ensure_version!(app_version, platform: platform)
@@ -142,14 +140,14 @@ module Deliver
142
140
 
143
141
  if upload_ipa
144
142
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
145
- app_id: options[:app].apple_id,
143
+ app_id: options[:app].id,
146
144
  ipa_path: options[:ipa],
147
145
  package_path: "/tmp",
148
146
  platform: options[:platform]
149
147
  )
150
148
  elsif upload_pkg
151
149
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
152
- app_id: options[:app].apple_id,
150
+ app_id: options[:app].id,
153
151
  pkg_path: options[:pkg],
154
152
  package_path: "/tmp",
155
153
  platform: options[:platform]
@@ -157,15 +155,12 @@ module Deliver
157
155
  end
158
156
 
159
157
  transporter = transporter_for_selected_team
160
- result = transporter.upload(options[:app].apple_id, package_path)
158
+ result = transporter.upload(options[:app].id, package_path)
161
159
  UI.user_error!("Could not upload binary to App Store Connect. Check out the error above", show_github_issues: true) unless result
162
160
  end
163
161
 
164
162
  def reject_version_if_possible
165
- legacy_app = options[:app]
166
- app_id = legacy_app.apple_id
167
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
168
-
163
+ app = options[:app]
169
164
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
170
165
  if app.reject_version_if_possible!(platform: platform)
171
166
  UI.success("Successfully rejected previous version!")