deliver/lib/deliver/download_screenshots.rb in fastlane-2.150.0.rc4 vs deliver/lib/deliver/download_screenshots.rb in fastlane-2.150.0.rc5

- old
+ new

@@ -1,6 +1,7 @@ require_relative 'module' +require 'spaceship' require 'open-uri' module Deliver class DownloadScreenshots def self.run(options, path) @@ -11,38 +12,57 @@ UI.error(ex) UI.error("Couldn't download already existing screenshots from App Store Connect.") end def self.download(options, folder_path) - v = options[:use_live_version] ? options[:app].live_version(platform: options[:platform]) : options[:app].latest_version(platform: options[:platform]) + legacy_app = options[:app] + app_id = legacy_app.apple_id + app = Spaceship::ConnectAPI::App.get(app_id: app_id) - v.screenshots.each do |language, screenshots| - screenshots.each do |screenshot| - file_name = [screenshot.sort_order, screenshot.device_type, screenshot.sort_order].join("_") - original_file_extension = File.basename(screenshot.original_file_name) - file_name += "." + original_file_extension + platform = Spaceship::ConnectAPI::Platform.map(options[:platform]) + version = if options[:use_live_version] + app.get_live_app_store_version(platform: platform) + else + app.get_edit_app_store_version(platform: platform) + end - UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'") + localizations = version.get_app_store_version_localizations + localizations.each do |localization| + screenshot_sets = localization.get_app_screenshot_sets + screenshot_sets.each do |screenshot_set| + screenshot_set.app_screenshots.each_with_index do |screenshot, index| + url = screenshot.image_asset_url + next if url.nil? - # If the screen shot is for an appleTV we need to store it in a way that we'll know it's an appleTV - # screen shot later as the screen size is the same as an iPhone 6 Plus in landscape. - if screenshot.device_type == "appleTV" - containing_folder = File.join(folder_path, "appleTV", screenshot.language) - else - containing_folder = File.join(folder_path, screenshot.language) - end + file_name = [index, screenshot_set.screenshot_display_type, index].join("_") + original_file_extension = File.basename(screenshot.file_name) + file_name += "." + original_file_extension - if screenshot.is_imessage - containing_folder = File.join(folder_path, "iMessage", screenshot.language) - end + language = localization.locale - begin - FileUtils.mkdir_p(containing_folder) - rescue - # if it's already there + UI.message("Downloading existing screenshot '#{file_name}' for language '#{language}'") + + # If the screen shot is for an appleTV we need to store it in a way that we'll know it's an appleTV + # screen shot later as the screen size is the same as an iPhone 6 Plus in landscape. + if screenshot_set.apple_tv? + containing_folder = File.join(folder_path, "appleTV", language) + else + containing_folder = File.join(folder_path, language) + end + + if screenshot_set.imessage? + containing_folder = File.join(folder_path, "iMessage", language) + end + + begin + FileUtils.mkdir_p(containing_folder) + rescue + # if it's already there + end + + path = File.join(containing_folder, file_name) + File.binwrite(path, open(url).read) end - path = File.join(containing_folder, file_name) - File.binwrite(path, open(screenshot.url).read) end end end end end