Class: AppInfo::Parser::InfoPlist

Inherits:
Object
  • Object
show all
Defined in:
lib/app_info/parser/ipa/info_plist.rb

Overview

iOS Info.plist parser

Instance Method Summary collapse

Constructor Details

#initialize(app_path) ⇒ InfoPlist

Returns a new instance of InfoPlist.



7
8
9
# File 'lib/app_info/parser/ipa/info_plist.rb', line 7

def initialize(app_path)
  @app_path = app_path
end

Instance Method Details

#build_versionObject



11
12
13
# File 'lib/app_info/parser/ipa/info_plist.rb', line 11

def build_version
  info.try(:[], 'CFBundleVersion')
end

#bundle_nameObject



31
32
33
# File 'lib/app_info/parser/ipa/info_plist.rb', line 31

def bundle_name
  info.try(:[], 'CFBundleName')
end

#device_typeObject



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/app_info/parser/ipa/info_plist.rb', line 69

def device_type
  device_family = info.try(:[], 'UIDeviceFamily')
  if device_family.length == 1
    case device_family
    when [1]
      'iPhone'
    when [2]
      'iPad'
    end
  elsif device_family.length == 2 && device_family == [1, 2]
    'Universal'
  end
end

#display_nameObject



27
28
29
# File 'lib/app_info/parser/ipa/info_plist.rb', line 27

def display_name
  info.try(:[], 'CFBundleDisplayName')
end

#iconsObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/app_info/parser/ipa/info_plist.rb', line 42

def icons
  return @icons if @icons

  @icons = []
  icons_root_path.each do |name|
    icon_array = info.try(:[], name)
                     .try(:[], 'CFBundlePrimaryIcon')
                     .try(:[], 'CFBundleIconFiles')

    next if icon_array.nil? || icon_array.count == 0

    icon_array.each do |items|
      Dir.glob(File.join(@app_path, "#{items}*")).find_all.each do |file|
        dict = {
          name: File.basename(file),
          file: file,
          dimensions: Pngdefry.dimensions(file)
        }

        @icons.push(dict)
      end
    end
  end

  @icons
end

#identifierObject Also known as: bundle_id



19
20
21
# File 'lib/app_info/parser/ipa/info_plist.rb', line 19

def identifier
  info.try(:[], 'CFBundleIdentifier')
end

#infoObject



103
104
105
# File 'lib/app_info/parser/ipa/info_plist.rb', line 103

def info
  @info ||= CFPropertyList.native_types(CFPropertyList::List.new(file: info_path).value)
end

#info_pathObject



107
108
109
# File 'lib/app_info/parser/ipa/info_plist.rb', line 107

def info_path
  File.join(@app_path, 'Info.plist')
end

#ipad?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/app_info/parser/ipa/info_plist.rb', line 87

def ipad?
  device_type == 'iPad'
end

#iphone?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/app_info/parser/ipa/info_plist.rb', line 83

def iphone?
  device_type == 'iPhone'
end

#min_sdk_versionObject

Extract the Minimum OS Version from the Info.plist



38
39
40
# File 'lib/app_info/parser/ipa/info_plist.rb', line 38

def min_sdk_version
  info.try(:[], 'MinimumOSVersion')
end

#nameObject



23
24
25
# File 'lib/app_info/parser/ipa/info_plist.rb', line 23

def name
  display_name || bundle_name
end

#release_typeObject



95
96
97
98
99
100
101
# File 'lib/app_info/parser/ipa/info_plist.rb', line 95

def release_type
  if stored?
    'Store'
  else
    build_type
  end
end

#release_versionObject



15
16
17
# File 'lib/app_info/parser/ipa/info_plist.rb', line 15

def release_version
  info.try(:[], 'CFBundleShortVersionString')
end

#universal?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/app_info/parser/ipa/info_plist.rb', line 91

def universal?
  device_type == 'Universal'
end