class Shenzhen::Plugins::ITunesConnect::Client
Attributes
ipa[R]
params[R]
sdk[R]
Public Class Methods
new(ipa, apple_id, sdk, account, password, params = [])
click to toggle source
# File lib/shenzhen/plugins/itunesconnect.rb, line 13 def initialize(ipa, apple_id, sdk, account, password, params = []) @ipa = ipa @apple_id = apple_id @sdk = sdk @account = account @password = password @params = params @filename = File.basename(@ipa).tr(" ", "_") end
Public Instance Methods
upload_build!()
click to toggle source
# File lib/shenzhen/plugins/itunesconnect.rb, line 23 def upload_build! size = File.size(@ipa) checksum = Digest::MD5.file(@ipa) begin FileUtils.mkdir_p("Package.itmsp") FileUtils.copy_entry(@ipa, "Package.itmsp/#{@filename}") File.write("Package.itmsp/metadata.xml", metadata(@apple_id, checksum, size)) raise if /(error)|(fail)/i === transport rescue say_error "An error occurred when trying to upload the build to iTunesConnect.\nRun with --verbose for more info." and abort ensure FileUtils.rm_rf("Package.itmsp", :secure => true) end end
Private Instance Methods
metadata(apple_id, checksum, size)
click to toggle source
# File lib/shenzhen/plugins/itunesconnect.rb, line 62 def metadata(apple_id, checksum, size) %{<?xml version="1.0" encoding="UTF-8"?> <package version="software4.7" xmlns="http://apple.com/itunes/importer"> <software_assets apple_id="#{apple_id}"> <asset type="bundle"> <data_file> <file_name>#{@filename}</file_name> <checksum type="md5">#{checksum}</checksum> <size>#{size}</size> </data_file> </asset> </software_assets> </package> } end
transport()
click to toggle source
# File lib/shenzhen/plugins/itunesconnect.rb, line 43 def transport xcode = `xcode-select --print-path`.strip tool = File.join(File.dirname(xcode), "Applications/Application Loader.app/Contents/MacOS/itms/bin/iTMSTransporter").gsub(/\s/, '\ ') tool = File.join(File.dirname(xcode), "Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter").gsub(/\s/, '\ ') if !File.exist?(tool) escaped_password = Shellwords.escape(@password) args = [tool, "-m upload", "-f Package.itmsp", "-u #{Shellwords.escape(@account)}", "-p #{escaped_password}"] command = args.join(' ') puts command.sub("-p #{escaped_password}", "-p ******") if $verbose output = `#{command} 2> /dev/null` puts output.chomp if $verbose raise "Failed to upload package to iTunes Connect" unless $?.exitstatus == 0 output end