Class: FastlaneCore::IpaUploadPackageBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane_core/ipa_upload_package_builder.rb

Overview

Builds a package for the binary ready to be uploaded with the iTunes Transporter

Constant Summary collapse

METADATA_FILE_NAME =
"metadata.xml"

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#package_pathObject

Returns the value of attribute package_path.



8
9
10
# File 'lib/fastlane_core/ipa_upload_package_builder.rb', line 8

def package_path
  @package_path
end

Instance Method Details

#generate(app_id: nil, ipa_path: nil, package_path: nil, platform: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fastlane_core/ipa_upload_package_builder.rb', line 10

def generate(app_id: nil, ipa_path: nil, package_path: nil, platform: nil)
  self.package_path = File.join(package_path, "#{app_id}.itmsp")
  FileUtils.rm_rf self.package_path if File.directory?(self.package_path)
  FileUtils.mkdir_p self.package_path

  ipa_path = copy_ipa(ipa_path)
  @data = {
    apple_id: app_id,
    file_size: File.size(ipa_path),
    ipa_path: File.basename(ipa_path), # this is only the base name as the ipa is inside the package
    md5: Digest::MD5.hexdigest(File.read(ipa_path)),
    archive_type: "bundle",
    platform: (platform || "ios") # pass "appletvos" for Apple TV's IPA
  }

  xml_path = File.join(FastlaneCore::ROOT, "lib/assets/XMLTemplate.xml.erb")
  xml = ERB.new(File.read(xml_path)).result(binding) # http://www.rrn.dk/rubys-erb-templating-system

  File.write(File.join(self.package_path, METADATA_FILE_NAME), xml)
  UI.success("Wrote XML data to '#{self.package_path}'") if $verbose

  return package_path
end