Class: FastlaneCore::PkgFileAnalyser

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

Class Method Summary collapse

Class Method Details

.fetch_app_identifier(path) ⇒ Object



5
6
7
8
9
# File 'lib/fastlane_core/pkg_file_analyser.rb', line 5

def self.fetch_app_identifier(path)
  xml = self.fetch_distribution_xml_file(path)
  return xml.elements['installer-gui-script/product'].attributes['id'] if xml
  return nil
end

.fetch_app_version(path) ⇒ Object

Fetches the app version from the given pkg file.



12
13
14
15
16
# File 'lib/fastlane_core/pkg_file_analyser.rb', line 12

def self.fetch_app_version(path)
  xml = self.fetch_distribution_xml_file(path)
  return xml.elements['installer-gui-script/product'].attributes['version'] if xml
  return nil
end

.fetch_distribution_xml_file(path) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/fastlane_core/pkg_file_analyser.rb', line 18

def self.fetch_distribution_xml_file(path)
  Dir.mktmpdir do |dir|
    Helper.backticks("xar -C #{dir.shellescape} -xf #{path.shellescape}")

    Dir.foreach(dir) do |file|
      next unless file.include? 'Distribution'

      begin
        content = File.open(File.join(dir, file))
        xml = REXML::Document.new(content)

        if xml.elements['installer-gui-script/product']
          return xml
        end
      rescue => ex
        UI.error(ex)
        UI.error("Error parsing *.pkg distribution xml #{File.join(dir, file)}")
      end
    end

    nil
  end
end