class AppInfo::InfoPlist

iOS Info.plist parser

Public Class Methods

new(file) click to toggle source
# File lib/app_info/info_plist.rb, line 12
def initialize(file)
  @file = file
end

Public Instance Methods

[](key) click to toggle source
# File lib/app_info/info_plist.rb, line 108
def [](key)
  info.try(:[], key.to_s)
end
build_version() click to toggle source
# File lib/app_info/info_plist.rb, line 20
def build_version
  info.try(:[], 'CFBundleVersion')
end
bundle_id()
Alias for: identifier
bundle_name() click to toggle source
# File lib/app_info/info_plist.rb, line 41
def bundle_name
  info.try(:[], 'CFBundleName')
end
device_family() click to toggle source
# File lib/app_info/info_plist.rb, line 96
def device_family
  info.try(:[], 'UIDeviceFamily') || []
end
device_type() click to toggle source
# File lib/app_info/info_plist.rb, line 67
def device_type
  device_family = info.try(:[], 'UIDeviceFamily')
  if device_family == [1]
    AppInfo::Device::IPHONE
  elsif device_family == [2]
    AppInfo::Device::IPAD
  elsif device_family == [1, 2]
    AppInfo::Device::UNIVERSAL
  elsif !info.try(:[], 'DTSDKName').nil? || !info.try(:[], 'DTPlatformName').nil?
    AppInfo::Device::MACOS
  end
end
display_name() click to toggle source
# File lib/app_info/info_plist.rb, line 37
def display_name
  info.try(:[], 'CFBundleDisplayName')
end
icons() click to toggle source
# File lib/app_info/info_plist.rb, line 63
def icons
  @icons ||= ICON_KEYS[device_type]
end
identifier() click to toggle source
# File lib/app_info/info_plist.rb, line 28
def identifier
  info.try(:[], 'CFBundleIdentifier')
end
Also aliased as: bundle_id
ipad?() click to toggle source
# File lib/app_info/info_plist.rb, line 84
def ipad?
  device_type == Device::IPAD
end
iphone?() click to toggle source
# File lib/app_info/info_plist.rb, line 80
def iphone?
  device_type == Device::IPHONE
end
macos?() click to toggle source
# File lib/app_info/info_plist.rb, line 92
def macos?
  device_type == Device::MACOS
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/app_info/info_plist.rb, line 114
def method_missing(method_name, *args, &block)
  info.try(:[], Util.format_key(method_name)) ||
    info.send(method_name) ||
    super
end
min_os_version() click to toggle source
# File lib/app_info/info_plist.rb, line 45
def min_os_version
  min_sdk_version || min_system_version
end
min_sdk_version() click to toggle source

Extract the Minimum OS Version from the Info.plist (iOS Only)

# File lib/app_info/info_plist.rb, line 52
def min_sdk_version
  info.try(:[], 'MinimumOSVersion')
end
min_system_version() click to toggle source

Extract the Minimum OS Version from the Info.plist (macOS Only)

# File lib/app_info/info_plist.rb, line 59
def min_system_version
  info.try(:[], 'LSMinimumSystemVersion')
end
name() click to toggle source
# File lib/app_info/info_plist.rb, line 33
def name
  display_name || bundle_name
end
release_type() click to toggle source
# File lib/app_info/info_plist.rb, line 100
def release_type
  if stored?
    'Store'
  else
    build_type
  end
end
release_version() click to toggle source
# File lib/app_info/info_plist.rb, line 24
def release_version
  info.try(:[], 'CFBundleShortVersionString')
end
respond_to_missing?(method_name, *args) click to toggle source
Calls superclass method
# File lib/app_info/info_plist.rb, line 120
def respond_to_missing?(method_name, *args)
  info.key?(Util.format_key(method_name)) ||
    info.respond_to?(method_name) ||
    super
end
universal?() click to toggle source
# File lib/app_info/info_plist.rb, line 88
def universal?
  device_type == Device::UNIVERSAL
end
version() click to toggle source
# File lib/app_info/info_plist.rb, line 16
def version
  release_version || build_version
end

Private Instance Methods

app_path() click to toggle source
# File lib/app_info/info_plist.rb, line 134
def app_path
  @app_path ||= case device_type
                when Device::MACOS
                  File.dirname(@file)
                else
                  File.expand_path('../', @file)
                end
end
info() click to toggle source
# File lib/app_info/info_plist.rb, line 128
def info
  return unless File.file?(@file)

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