class MotionProvisioning::MobileProvision

Represents a .mobileprovision file on disk

Attributes

certificates[RW]
enabled_services[RW]
hash[RW]

Public Class Methods

new(path) click to toggle source

@param path (String): Path to the .mobileprovision file

# File lib/motion-provisioning/mobileprovision.rb, line 7
def initialize(path)
  file = File.read(path)
  start_index = file.index("<?xml")
  end_index = file.index("</plist>") + 8
  length = end_index - start_index
  self.hash = Plist::parse_xml(file.slice(start_index, length))
  self.certificates = []
  self.enabled_services = []

  hash['DeveloperCertificates'].each do |certificate|
    self.certificates << certificate.read
  end
end

Public Instance Methods

devices() click to toggle source
# File lib/motion-provisioning/mobileprovision.rb, line 25
def devices
  hash['ProvisionedDevices'].map(&:downcase)
end
name() click to toggle source
# File lib/motion-provisioning/mobileprovision.rb, line 21
def name
  hash['Name']
end
valid?(certificate, app_entitlements) click to toggle source

Checks wether the .mobileprovision file is valid by checking its expiration date, entitlements and certificates @param certificate (String): Path to the certificate file @param app_entitlements (Hash): A hash containing the app's entitlements @return Boolean

# File lib/motion-provisioning/mobileprovision.rb, line 34
def valid?(certificate, app_entitlements)
  return false if hash['ExpirationDate'] < DateTime.now

  if !certificates.include?(File.read(certificate))
    Utils.log("Warning", "Your provisioning profile does not include your certificate. Repairing...")
    return false
  end

  true
end