fastlane 2.151.2 → 2.155.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/deliver/lib/deliver/app_screenshot.rb +1 -1
- data/deliver/lib/deliver/commands_generator.rb +7 -4
- data/deliver/lib/deliver/detect_values.rb +9 -3
- data/deliver/lib/deliver/download_screenshots.rb +1 -3
- data/deliver/lib/deliver/html_generator.rb +8 -1
- data/deliver/lib/deliver/options.rb +1 -1
- data/deliver/lib/deliver/runner.rb +5 -10
- data/deliver/lib/deliver/setup.rb +92 -3
- data/deliver/lib/deliver/submit_for_review.rb +4 -6
- data/deliver/lib/deliver/upload_metadata.rb +51 -30
- data/deliver/lib/deliver/upload_price_tier.rb +1 -3
- data/deliver/lib/deliver/upload_screenshots.rb +75 -44
- data/fastlane/lib/fastlane/{helper/.s3_client_helper.rb.swp → .erb_template_helper.rb.swp} +0 -0
- data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
- data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
- data/fastlane/lib/fastlane/actions/erb.rb +10 -2
- data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
- data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +5 -0
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
- data/fastlane/lib/fastlane/runner.rb +3 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +3 -3
- data/fastlane/swift/Fastlane.swift +419 -192
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +10 -2
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
- data/frameit/lib/frameit/editor.rb +11 -6
- data/gym/lib/gym/detect_values.rb +6 -3
- data/gym/lib/gym/module.rb +30 -0
- data/gym/lib/gym/runner.rb +23 -18
- data/match/lib/match/generator.rb +6 -0
- data/match/lib/match/options.rb +16 -4
- data/match/lib/match/runner.rb +13 -5
- data/match/lib/match/spaceship_ensure.rb +7 -9
- data/match/lib/match/storage/git_storage.rb +16 -2
- data/match/lib/match/storage/google_cloud_storage.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +9 -0
- data/pilot/lib/pilot/options.rb +7 -1
- data/scan/lib/scan/runner.rb +19 -6
- data/sigh/lib/sigh/download_all.rb +42 -27
- data/sigh/lib/sigh/module.rb +26 -0
- data/sigh/lib/sigh/options.rb +2 -2
- data/sigh/lib/sigh/runner.rb +74 -33
- data/snapshot/lib/snapshot/options.rb +10 -0
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +3 -2
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +4 -1
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +5 -3
- data/spaceship/lib/spaceship/connect_api/model.rb +15 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +61 -3
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +17 -5
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +41 -7
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +31 -1
- data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +46 -4
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
- data/supply/lib/supply/client.rb +2 -1
- data/supply/lib/supply/options.rb +8 -1
- metadata +34 -61
- data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
- data/frameit/lib/frameit/.editor.rb.swp +0 -0
@@ -116,6 +116,11 @@ module Snapshot
|
|
116
116
|
description: "Enabling this option will automatically erase the simulator before running the application",
|
117
117
|
default_value: false,
|
118
118
|
is_string: false),
|
119
|
+
FastlaneCore::ConfigItem.new(key: :headless,
|
120
|
+
env_name: 'SNAPSHOT_HEADLESS',
|
121
|
+
description: "Enabling this option will prevent displaying the simulator window",
|
122
|
+
default_value: true,
|
123
|
+
type: Boolean),
|
119
124
|
FastlaneCore::ConfigItem.new(key: :override_status_bar,
|
120
125
|
env_name: 'SNAPSHOT_OVERRIDE_STATUS_BAR',
|
121
126
|
description: "Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception",
|
@@ -273,6 +278,11 @@ module Snapshot
|
|
273
278
|
env_name: "SNAPSHOT_DISABLE_XCPRETTY",
|
274
279
|
description: "Disable xcpretty formatting of build",
|
275
280
|
type: Boolean,
|
281
|
+
optional: true),
|
282
|
+
FastlaneCore::ConfigItem.new(key: :suppress_xcode_output,
|
283
|
+
env_name: "SNAPSHOT_SUPPRESS_XCODE_OUTPUT",
|
284
|
+
description: "Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path",
|
285
|
+
type: Boolean,
|
276
286
|
optional: true)
|
277
287
|
]
|
278
288
|
end
|
@@ -7,6 +7,7 @@ module Snapshot
|
|
7
7
|
attr_accessor :add_videos
|
8
8
|
attr_accessor :clean
|
9
9
|
attr_accessor :erase_simulator
|
10
|
+
attr_accessor :headless
|
10
11
|
attr_accessor :localize_simulator
|
11
12
|
attr_accessor :dark_mode
|
12
13
|
attr_accessor :reinstall_app
|
@@ -34,6 +35,7 @@ module Snapshot
|
|
34
35
|
@add_videos = snapshot_config[:add_videos]
|
35
36
|
@clean = snapshot_config[:clean]
|
36
37
|
@erase_simulator = snapshot_config[:erase_simulator]
|
38
|
+
@headless = snapshot_config[:headless]
|
37
39
|
@localize_simulator = snapshot_config[:localize_simulator]
|
38
40
|
@dark_mode = snapshot_config[:dark_mode]
|
39
41
|
@reinstall_app = snapshot_config[:reinstall_app]
|
@@ -76,6 +76,11 @@ module Snapshot
|
|
76
76
|
disable_slide_to_type(type)
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
unless launcher_config.headless
|
81
|
+
simulator_path = File.join(Helper.xcode_path, 'Applications', 'Simulator.app')
|
82
|
+
Helper.backticks("open -a #{simulator_path} -g", print: FastlaneCore::Globals.verbose?)
|
83
|
+
end
|
79
84
|
end
|
80
85
|
|
81
86
|
# pass an array of device types
|
@@ -33,8 +33,9 @@ module Snapshot
|
|
33
33
|
|
34
34
|
xcpretty = "xcpretty #{Snapshot.config[:xcpretty_args]}"
|
35
35
|
xcpretty << "--no-color" if Helper.colors_disabled?
|
36
|
-
|
37
|
-
|
36
|
+
pipe << "| #{xcpretty}"
|
37
|
+
pipe << "> /dev/null" if Snapshot.config[:suppress_xcode_output]
|
38
|
+
return pipe
|
38
39
|
end
|
39
40
|
|
40
41
|
def destination(devices)
|
@@ -24,7 +24,10 @@ module Snapshot
|
|
24
24
|
|
25
25
|
def pipe(device_type, language, locale)
|
26
26
|
log_path = xcodebuild_log_path(device_type: device_type, language: language, locale: locale)
|
27
|
-
|
27
|
+
pipe = ["| tee #{log_path.shellescape}"]
|
28
|
+
pipe << "| xcpretty #{Snapshot.config[:xcpretty_args]}"
|
29
|
+
pipe << "> /dev/null" if Snapshot.config[:suppress_xcode_output]
|
30
|
+
return pipe
|
28
31
|
end
|
29
32
|
|
30
33
|
def destination(device_name)
|
@@ -42,6 +42,7 @@ require 'spaceship/connect_api/models/app_price'
|
|
42
42
|
require 'spaceship/connect_api/models/app_price_tier'
|
43
43
|
require 'spaceship/connect_api/models/app_store_review_attachment'
|
44
44
|
require 'spaceship/connect_api/models/app_store_review_detail'
|
45
|
+
require 'spaceship/connect_api/models/app_store_version_release_request'
|
45
46
|
require 'spaceship/connect_api/models/app_store_version_submission'
|
46
47
|
require 'spaceship/connect_api/models/app_screenshot_set'
|
47
48
|
require 'spaceship/connect_api/models/app_screenshot'
|
@@ -88,8 +88,8 @@ module Spaceship
|
|
88
88
|
handle_response(response)
|
89
89
|
end
|
90
90
|
|
91
|
-
def post(url_or_path, body)
|
92
|
-
response = with_asc_retry do
|
91
|
+
def post(url_or_path, body, tries: 5)
|
92
|
+
response = with_asc_retry(tries) do
|
93
93
|
request(:post) do |req|
|
94
94
|
req.url(url_or_path)
|
95
95
|
req.body = body.to_json
|
@@ -129,7 +129,6 @@ module Spaceship
|
|
129
129
|
tries = 1 if Object.const_defined?("SpecHelper")
|
130
130
|
response = yield
|
131
131
|
|
132
|
-
tries -= 1
|
133
132
|
status = response.status if response
|
134
133
|
|
135
134
|
if [500, 504].include?(status)
|
@@ -139,6 +138,7 @@ module Spaceship
|
|
139
138
|
|
140
139
|
return response
|
141
140
|
rescue => error
|
141
|
+
tries -= 1
|
142
142
|
puts(error) if Spaceship::Globals.verbose?
|
143
143
|
if tries.zero?
|
144
144
|
return response
|
@@ -164,6 +164,8 @@ module Spaceship
|
|
164
164
|
|
165
165
|
raise UnexpectedResponse, "Temporary App Store Connect error: #{response.body}" if response.body['statusCode'] == 'ERROR'
|
166
166
|
|
167
|
+
store_csrf_tokens(response)
|
168
|
+
|
167
169
|
return Spaceship::ConnectAPI::Response.new(body: response.body, status: response.status, client: self)
|
168
170
|
end
|
169
171
|
|
@@ -8,6 +8,7 @@ module Spaceship
|
|
8
8
|
end
|
9
9
|
|
10
10
|
attr_accessor :id
|
11
|
+
attr_accessor :reverse_attr_map
|
11
12
|
|
12
13
|
def initialize(id, attributes)
|
13
14
|
self.id = id
|
@@ -29,6 +30,7 @@ module Spaceship
|
|
29
30
|
# Creates alias for :minOsVersion to :min_os_version
|
30
31
|
#
|
31
32
|
def attr_mapping(attr_map)
|
33
|
+
self.reverse_attr_map ||= attr_map.invert.each_with_object({}) { |(k, v), memo| memo[k.to_sym] = v; }
|
32
34
|
attr_map.each do |key, value|
|
33
35
|
# Actual
|
34
36
|
reader = value.to_sym
|
@@ -50,6 +52,18 @@ module Spaceship
|
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
55
|
+
def reverse_attr_mapping(attributes)
|
56
|
+
return nil if attributes.nil?
|
57
|
+
|
58
|
+
# allows for getting map from either an instance or class execution
|
59
|
+
map = self.reverse_attr_map || self.class.reverse_attr_map
|
60
|
+
|
61
|
+
attributes.each_with_object({}) do |(k, v), memo|
|
62
|
+
key = map[k.to_sym] || k.to_sym
|
63
|
+
memo[key] = v
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
53
67
|
def to_json(*options)
|
54
68
|
instance_variables.map do |var|
|
55
69
|
[var.to_s[1..-1], instance_variable_get(var)]
|
@@ -138,7 +152,7 @@ module Spaceship
|
|
138
152
|
id == included_data["id"] && type == included_data["type"]
|
139
153
|
end
|
140
154
|
|
141
|
-
inflate_model(relationship_data, included)
|
155
|
+
inflate_model(relationship_data, included) if relationship_data
|
142
156
|
end
|
143
157
|
|
144
158
|
# Map a hash or an array of data
|
@@ -10,11 +10,11 @@ module Spaceship
|
|
10
10
|
attr_accessor :bundle_id
|
11
11
|
attr_accessor :sku
|
12
12
|
attr_accessor :primary_locale
|
13
|
+
attr_accessor :is_opted_in_to_distribute_ios_app_on_mac_app_store
|
13
14
|
attr_accessor :removed
|
14
15
|
attr_accessor :is_aag
|
15
|
-
|
16
|
+
attr_accessor :available_in_new_territories
|
16
17
|
attr_accessor :content_rights_declaration
|
17
|
-
|
18
18
|
attr_accessor :app_store_versions
|
19
19
|
|
20
20
|
module ContentRightsDeclaration
|
@@ -27,8 +27,10 @@ module Spaceship
|
|
27
27
|
"bundleId" => "bundle_id",
|
28
28
|
"sku" => "sku",
|
29
29
|
"primaryLocale" => "primary_locale",
|
30
|
+
"isOptedInToDistributeIosAppOnMacAppStore" => "is_opted_in_to_distribute_ios_app_on_mac_app_store",
|
30
31
|
"removed" => "removed",
|
31
32
|
"isAAG" => "is_aag",
|
33
|
+
"availableInNewTerritories" => "available_in_new_territories",
|
32
34
|
|
33
35
|
"contentRightsDeclaration" => "content_rights_declaration",
|
34
36
|
|
@@ -71,6 +73,7 @@ module Spaceship
|
|
71
73
|
end
|
72
74
|
|
73
75
|
def update(attributes: nil, app_price_tier_id: nil, territory_ids: nil)
|
76
|
+
attributes = reverse_attr_mapping(attributes)
|
74
77
|
return Spaceship::ConnectAPI.patch_app(app_id: id, attributes: attributes, app_price_tier_id: app_price_tier_id, territory_ids: territory_ids)
|
75
78
|
end
|
76
79
|
|
@@ -78,6 +81,21 @@ module Spaceship
|
|
78
81
|
# App Info
|
79
82
|
#
|
80
83
|
|
84
|
+
def fetch_live_app_info(includes: Spaceship::ConnectAPI::AppInfo::ESSENTIAL_INCLUDES)
|
85
|
+
states = [
|
86
|
+
Spaceship::ConnectAPI::AppInfo::AppStoreState::READY_FOR_SALE,
|
87
|
+
Spaceship::ConnectAPI::AppInfo::AppStoreState::PENDING_DEVELOPER_RELEASE,
|
88
|
+
Spaceship::ConnectAPI::AppInfo::AppStoreState::PROCESSING_FOR_APP_STORE,
|
89
|
+
Spaceship::ConnectAPI::AppInfo::AppStoreState::IN_REVIEW
|
90
|
+
]
|
91
|
+
|
92
|
+
filter = { app: id }
|
93
|
+
resp = Spaceship::ConnectAPI.get_app_infos(filter: filter, includes: includes)
|
94
|
+
return resp.to_models.select do |model|
|
95
|
+
states.include?(model.app_store_state)
|
96
|
+
end.first
|
97
|
+
end
|
98
|
+
|
81
99
|
def fetch_edit_app_info(includes: Spaceship::ConnectAPI::AppInfo::ESSENTIAL_INCLUDES)
|
82
100
|
states = [
|
83
101
|
Spaceship::ConnectAPI::AppInfo::AppStoreState::PREPARE_FOR_SUBMISSION,
|
@@ -95,6 +113,16 @@ module Spaceship
|
|
95
113
|
end.first
|
96
114
|
end
|
97
115
|
|
116
|
+
#
|
117
|
+
# Available Territories
|
118
|
+
#
|
119
|
+
|
120
|
+
def fetch_available_territories(filter: {}, includes: nil, limit: nil, sort: nil)
|
121
|
+
filter ||= {}
|
122
|
+
resps = Spaceship::ConnectAPI.get_available_territories(app_id: id, filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
123
|
+
return resps.flat_map(&:to_models)
|
124
|
+
end
|
125
|
+
|
98
126
|
#
|
99
127
|
# App Pricing
|
100
128
|
#
|
@@ -152,10 +180,22 @@ module Spaceship
|
|
152
180
|
end
|
153
181
|
end
|
154
182
|
|
183
|
+
def get_latest_app_store_version(platform: nil, includes: nil)
|
184
|
+
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
185
|
+
filter = {
|
186
|
+
platform: platform
|
187
|
+
}
|
188
|
+
|
189
|
+
# Get the latest version
|
190
|
+
return get_app_store_versions(filter: filter, includes: includes)
|
191
|
+
.sort_by { |v| Date.parse(v.created_date) }
|
192
|
+
.last
|
193
|
+
end
|
194
|
+
|
155
195
|
def get_live_app_store_version(platform: nil, includes: nil)
|
156
196
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
157
197
|
filter = {
|
158
|
-
appStoreState:
|
198
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_SALE,
|
159
199
|
platform: platform
|
160
200
|
}
|
161
201
|
return get_app_store_versions(filter: filter, includes: includes).first
|
@@ -181,6 +221,24 @@ module Spaceship
|
|
181
221
|
.last
|
182
222
|
end
|
183
223
|
|
224
|
+
def get_in_review_app_store_version(platform: nil, includes: nil)
|
225
|
+
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
226
|
+
filter = {
|
227
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::IN_REVIEW,
|
228
|
+
platform: platform
|
229
|
+
}
|
230
|
+
return get_app_store_versions(filter: filter, includes: includes).first
|
231
|
+
end
|
232
|
+
|
233
|
+
def get_pending_release_app_store_version(platform: nil, includes: nil)
|
234
|
+
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
235
|
+
filter = {
|
236
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_DEVELOPER_RELEASE,
|
237
|
+
platform: platform
|
238
|
+
}
|
239
|
+
return get_app_store_versions(filter: filter, includes: includes).first
|
240
|
+
end
|
241
|
+
|
184
242
|
def get_app_store_versions(filter: {}, includes: nil, limit: nil, sort: nil)
|
185
243
|
resps = Spaceship::ConnectAPI.get_app_store_versions(app_id: id, filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
186
244
|
return resps.flat_map(&:to_models)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative '../model'
|
2
2
|
require_relative '../file_uploader'
|
3
|
+
require_relative './app_screenshot_set'
|
3
4
|
require 'spaceship/globals'
|
4
5
|
|
5
6
|
require 'digest/md5'
|
@@ -9,6 +10,7 @@ module Spaceship
|
|
9
10
|
class AppScreenshot
|
10
11
|
include Spaceship::ConnectAPI::Model
|
11
12
|
|
13
|
+
attr_accessor :file_size
|
12
14
|
attr_accessor :file_name
|
13
15
|
attr_accessor :source_file_checksum
|
14
16
|
attr_accessor :image_asset
|
@@ -19,6 +21,7 @@ module Spaceship
|
|
19
21
|
attr_accessor :uploaded
|
20
22
|
|
21
23
|
attr_mapping({
|
24
|
+
"fileSize" => "file_size",
|
22
25
|
"fileName" => "file_name",
|
23
26
|
"sourceFileChecksum" => "source_file_checksum",
|
24
27
|
"imageAsset" => "image_asset",
|
@@ -33,6 +36,10 @@ module Spaceship
|
|
33
36
|
return "appScreenshots"
|
34
37
|
end
|
35
38
|
|
39
|
+
def awaiting_upload?
|
40
|
+
(asset_delivery_state || {})["state"] == "AWAITING_UPLOAD"
|
41
|
+
end
|
42
|
+
|
36
43
|
def complete?
|
37
44
|
(asset_delivery_state || {})["state"] == "COMPLETE"
|
38
45
|
end
|
@@ -84,11 +91,43 @@ module Spaceship
|
|
84
91
|
fileName: filename
|
85
92
|
}
|
86
93
|
|
87
|
-
# Create placeholder
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
94
|
+
# Create placeholder to upload screenshot
|
95
|
+
begin
|
96
|
+
screenshot = Spaceship::ConnectAPI.post_app_screenshot(
|
97
|
+
app_screenshot_set_id: app_screenshot_set_id,
|
98
|
+
attributes: post_attributes
|
99
|
+
).first
|
100
|
+
rescue => error
|
101
|
+
# Sometimes creating a screenshot with the web session App Store Connect API
|
102
|
+
# will result in a false failure. The response will return a 503 but the database
|
103
|
+
# insert will eventually go through.
|
104
|
+
#
|
105
|
+
# When this is observed, we will poll until we find the matchin screenshot that
|
106
|
+
# is awaiting for upload and file size
|
107
|
+
#
|
108
|
+
# https://github.com/fastlane/fastlane/pull/16842
|
109
|
+
time = Time.now.to_i
|
110
|
+
|
111
|
+
timeout_minutes = (ENV["SPACESHIP_SCREENSHOT_UPLOAD_TIMEOUT"] || 20).to_i
|
112
|
+
|
113
|
+
loop do
|
114
|
+
puts("Waiting for screenshot to appear before uploading...")
|
115
|
+
sleep(30)
|
116
|
+
|
117
|
+
screenshots = Spaceship::ConnectAPI::AppScreenshotSet
|
118
|
+
.get(app_screenshot_set_id: app_screenshot_set_id)
|
119
|
+
.app_screenshots
|
120
|
+
|
121
|
+
screenshot = screenshots.find do |s|
|
122
|
+
s.awaiting_upload? && s.file_size == filesize
|
123
|
+
end
|
124
|
+
|
125
|
+
break if screenshot
|
126
|
+
|
127
|
+
time_diff = Time.now.to_i - time
|
128
|
+
raise error if time_diff >= (60 * timeout_minutes)
|
129
|
+
end
|
130
|
+
end
|
92
131
|
|
93
132
|
# Upload the file
|
94
133
|
upload_operations = screenshot.upload_operations
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative '../model'
|
2
|
+
require_relative './app_store_review_detail'
|
2
3
|
require_relative './app_store_version_localization'
|
3
4
|
|
4
5
|
module Spaceship
|
@@ -85,6 +86,7 @@ module Spaceship
|
|
85
86
|
end
|
86
87
|
|
87
88
|
def update(attributes: nil)
|
89
|
+
attributes = reverse_attr_mapping(attributes)
|
88
90
|
return Spaceship::ConnectAPI.patch_app_store_version(app_store_version_id: id, attributes: attributes).first
|
89
91
|
end
|
90
92
|
|
@@ -118,6 +120,7 @@ module Spaceship
|
|
118
120
|
#
|
119
121
|
|
120
122
|
def create_app_store_review_detail(attributes: nil)
|
123
|
+
attributes = Spaceship::ConnectAPI::AppStoreReviewDetail.reverse_attr_mapping(attributes)
|
121
124
|
resp = Spaceship::ConnectAPI.post_app_store_review_detail(app_store_version_id: id, attributes: attributes)
|
122
125
|
return resp.to_models.first
|
123
126
|
end
|
@@ -155,6 +158,15 @@ module Spaceship
|
|
155
158
|
return resp.to_models.first
|
156
159
|
end
|
157
160
|
|
161
|
+
#
|
162
|
+
# App Store Version Release Requests
|
163
|
+
#
|
164
|
+
|
165
|
+
def create_app_store_version_release_request
|
166
|
+
resp = Spaceship::ConnectAPI.post_app_store_version_release_request(app_store_version_id: id)
|
167
|
+
return resp.to_models.first
|
168
|
+
end
|
169
|
+
|
158
170
|
#
|
159
171
|
# Build
|
160
172
|
#
|