class FastlaneCore::JavaTransporterExecutor
Generates commands and executes the iTMSTransporter by invoking its Java app directly, to avoid the crazy parameter escaping problems in its accompanying shell script.
Public Instance Methods
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 507 def build_credential_params(username = nil, password = nil, jwt = nil, api_key = nil, is_password_from_env = false) if !username.nil? && jwt.to_s.empty? if is_password_from_env "-u #{username.shellescape} -p @env:ITMS_TRANSPORTER_PASSWORD" elsif !password.nil? "-u #{username.shellescape} -p #{password.shellescape}" end elsif !jwt.to_s.empty? "-jwt #{jwt}" end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 588 def build_download_command(username, password, apple_id, destination = "/tmp", provider_short_name = "", jwt = nil) credential_params = build_credential_params(username, password, jwt, nil, is_default_itms_on_xcode_11?) if is_default_itms_on_xcode_11? [ ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" if jwt.to_s.empty?), 'xcrun iTMSTransporter', '-m lookupMetadata', credential_params, "-apple_id #{apple_id.shellescape}", "-destination #{destination.shellescape}", ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') else [ Helper.transporter_java_executable_path.shellescape, "-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}", '-XX:NewSize=2m', '-Xms32m', '-Xmx1024m', '-Xms1024m', '-Djava.awt.headless=true', '-Dsun.net.http.retryPost=false', java_code_option, '-m lookupMetadata', credential_params, "-apple_id #{apple_id.shellescape}", "-destination #{destination.shellescape}", ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 622 def build_provider_ids_command(username, password, jwt = nil, api_key = nil) credential_params = build_credential_params(username, password, jwt, api_key, is_default_itms_on_xcode_11?) if is_default_itms_on_xcode_11? [ ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" if jwt.to_s.empty?), 'xcrun iTMSTransporter', '-m provider', credential_params, '2>&1' # cause stderr to be written to stdout ].compact.join(' ') else [ Helper.transporter_java_executable_path.shellescape, "-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}", '-XX:NewSize=2m', '-Xms32m', '-Xmx1024m', '-Xms1024m', '-Djava.awt.headless=true', '-Dsun.net.http.retryPost=false', java_code_option, '-m provider', credential_params, '2>&1' # cause stderr to be written to stdout ].compact.join(' ') end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 519 def build_upload_command(username, password, source = "/tmp", provider_short_name = "", jwt = nil, platform = nil, api_key = nil) credential_params = build_credential_params(username, password, jwt, api_key, is_default_itms_on_xcode_11?) if is_default_itms_on_xcode_11? [ ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" if jwt.to_s.empty?), 'xcrun iTMSTransporter', '-m upload', credential_params, file_upload_option(source), additional_upload_parameters, # that's here, because the user might overwrite the -t option '-k 100000', ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') # compact gets rid of the possibly nil ENV value else [ Helper.transporter_java_executable_path.shellescape, "-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}", '-XX:NewSize=2m', '-Xms32m', '-Xmx1024m', '-Xms1024m', '-Djava.awt.headless=true', '-Dsun.net.http.retryPost=false', java_code_option, '-m upload', credential_params, file_upload_option(source), additional_upload_parameters, # that's here, because the user might overwrite the -t option '-k 100000', ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') # compact gets rid of the possibly nil ENV value end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 555 def build_verify_command(username, password, source = "/tmp", provider_short_name = "", **kwargs) jwt = kwargs[:jwt] credential_params = build_credential_params(username, password, jwt, nil, is_default_itms_on_xcode_11?) if is_default_itms_on_xcode_11? [ ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" if jwt.to_s.empty?), 'xcrun iTMSTransporter', '-m verify', credential_params, "-f #{source.shellescape}", ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') # compact gets rid of the possibly nil ENV value else [ Helper.transporter_java_executable_path.shellescape, "-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}", '-XX:NewSize=2m', '-Xms32m', '-Xmx1024m', '-Xms1024m', '-Djava.awt.headless=true', '-Dsun.net.http.retryPost=false', java_code_option, '-m verify', credential_params, "-f #{source.shellescape}", ("-itc_provider #{provider_short_name}" if jwt.nil? && !provider_short_name.to_s.empty?), '2>&1' # cause stderr to be written to stdout ].compact.join(' ') # compact gets rid of the possibly nil ENV value end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 670 def execute(command, hide_output) # The Java command needs to be run starting in a working directory in the iTMSTransporter # file area. The shell script takes care of changing directories over to there, but we'll # handle it manually here for this strategy. FileUtils.cd(Helper.itms_path) do return super(command, hide_output) end end
Calls superclass method
FastlaneCore::TransporterExecutor#execute
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 662 def handle_error(password) unless File.exist?(Helper.transporter_java_jar_path) UI.error("The iTMSTransporter Java app was not found at '#{Helper.transporter_java_jar_path}'.") UI.error("If you're using Xcode 6, please select the shell script executor by setting the environment variable "\ "FASTLANE_ITUNES_TRANSPORTER_USE_SHELL_SCRIPT=1") end end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 650 def is_default_itms_on_xcode_11? !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11) end
Source
# File fastlane_core/lib/fastlane_core/itunes_transporter.rb, line 654 def java_code_option if Helper.mac? && Helper.xcode_at_least?(9) return "-jar #{Helper.transporter_java_jar_path.shellescape}" else return "-classpath #{Helper.transporter_java_jar_path.shellescape} com.apple.transporter.Application" end end