class Match::ProfileIncludes

Constants

PROV_TYPES_WITH_DEVICES
PROV_TYPES_WITH_MULTIPLE_CERTIFICATES

Public Class Methods

can_force_include?(params:, notify:) click to toggle source
# File match/lib/match/profile_includes.rb, line 9
def self.can_force_include?(params:, notify:)
  self.can_force_include_all_devices?(params: params, notify: notify) &&
    self.can_force_include_all_certificates?(params: params, notify: notify)
end
can_force_include_all_certificates?(params:, notify: false) click to toggle source
# File match/lib/match/profile_includes.rb, line 78
def self.can_force_include_all_certificates?(params:, notify: false)
  return false if params[:readonly] || params[:force]
  return false unless params[:force_for_new_certificates]

  unless params[:include_all_certificates]
    UI.important("You specified 'force_for_new_certificates: true', but new certificates will not be added, cause 'include_all_certificates' is 'false'") if notify
    return false
  end

  provisioning_type = params[:type].to_sym

  can_force = PROV_TYPES_WITH_MULTIPLE_CERTIFICATES.include?(provisioning_type)

  if !can_force && notify
    # All other (not development) provisioning profiles don't contain
    # multiple certificates, thus shouldn't be renewed
    # if the certificates  count has changed.
    UI.important("Warning: `force_for_new_certificates` is set but is ignored for non-'development' provisioning profiles.")
    UI.important("You can safely stop specifying `force_for_new_certificates` when running Match for '#{provisioning_type}' provisioning profiles.")
  end

  can_force
end
can_force_include_all_devices?(params:, notify: false) click to toggle source
# File match/lib/match/profile_includes.rb, line 28
def self.can_force_include_all_devices?(params:, notify: false)
  return false if params[:readonly] || params[:force]
  return false unless params[:force_for_new_devices]

  provisioning_type = params[:type].to_sym

  can_force = PROV_TYPES_WITH_DEVICES.include?(provisioning_type)

  if !can_force && notify
    # App Store provisioning profiles don't contain device identifiers and
    # thus shouldn't be renewed if the device count has changed.
    UI.important("Warning: `force_for_new_devices` is set but is ignored for #{provisioning_type}.")
    UI.important("You can safely stop specifying `force_for_new_devices` when running Match for type '#{provisioning_type}'.")
  end

  can_force
end
certificates_differ?(portal_profile:, platform:, cached_certificates:) click to toggle source
# File match/lib/match/profile_includes.rb, line 102
def self.certificates_differ?(portal_profile:, platform:, cached_certificates:)
  return false unless portal_profile

  profile_certs = portal_profile.certificates || []

  portal_certs = cached_certificates
  portal_certs ||= Match::Portal::Fetcher.certificates(platform: platform, profile_type: portal_profile.profile_type)

  profile_certs_ids = profile_certs.map(&:id).sort
  portal_certs_ids = portal_certs.map(&:id).sort

  certificates_differ = profile_certs_ids != portal_certs_ids

  UI.important("Certificates in the profile and available on the portal differ. Recreating a profile") if certificates_differ

  return certificates_differ
end
devices_differ?(portal_profile:, platform:, include_mac_in_profiles:, cached_devices:) click to toggle source
# File match/lib/match/profile_includes.rb, line 46
def self.devices_differ?(portal_profile:, platform:, include_mac_in_profiles:, cached_devices:)
  return false unless portal_profile

  profile_devices = portal_profile.devices || []

  portal_devices = cached_devices
  portal_devices ||= Match::Portal::Fetcher.devices(platform: platform, include_mac_in_profiles: include_mac_in_profiles)

  profile_device_ids = profile_devices.map(&:id).sort
  portal_devices_ids = portal_devices.map(&:id).sort

  devices_differs = profile_device_ids != portal_devices_ids

  UI.important("Devices in the profile and available on the portal differ. Recreating a profile") if devices_differs

  return devices_differs
end
should_force_include_all_certificates?(params:, portal_profile:, cached_certificates:) click to toggle source

CERTIFICATES

# File match/lib/match/profile_includes.rb, line 70
def self.should_force_include_all_certificates?(params:, portal_profile:, cached_certificates:)
  return false unless self.can_force_include_all_certificates?(params: params)

  force = certificates_differ?(portal_profile: portal_profile, platform: params[:platform], cached_certificates: cached_certificates)

  return force
end
should_force_include_all_devices?(params:, portal_profile:, cached_devices:) click to toggle source

DEVICES

# File match/lib/match/profile_includes.rb, line 20
def self.should_force_include_all_devices?(params:, portal_profile:, cached_devices:)
  return false unless self.can_force_include_all_devices?(params: params)

  force = devices_differ?(portal_profile: portal_profile, platform: params[:platform], include_mac_in_profiles: params[:include_mac_in_profiles], cached_devices: cached_devices)

  return force
end