class Produce::Service

Public Class Methods

disable(options, args) click to toggle source
# File lib/produce/service.rb, line 7
def self.disable(options, args)
  self.new.disable(options, args)
end
enable(options, args) click to toggle source
# File lib/produce/service.rb, line 3
def self.enable(options, args)
  self.new.enable(options, args)
end

Public Instance Methods

app() click to toggle source
# File lib/produce/service.rb, line 216
def app
  return @app if @app

  UI.message("Starting login with user '#{Produce.config[:username]}'")
  Spaceship.login(Produce.config[:username], nil)
  Spaceship.select_team
  UI.message("Successfully logged in")

  @app ||= Spaceship.app.find(Produce.config[:app_identifier].to_s)
end
disable(options, _args) click to toggle source
# File lib/produce/service.rb, line 23
def disable(options, _args)
  unless app
    UI.message("[DevCenter] App '#{Produce.config[:app_identifier]}' does not exist")
    return
  end

  UI.success("[DevCenter] App found '#{app.name}'")
  UI.message("Disabling services")
  disabled = update(false, app, options)
  UI.success("Done! Disabled #{disabled} services.")
end
enable(options, _args) click to toggle source
# File lib/produce/service.rb, line 11
def enable(options, _args)
  unless app
    UI.message("[DevCenter] App '#{Produce.config[:app_identifier]}' does not exist")
    return
  end

  UI.success("[DevCenter] App found '#{app.name}'")
  UI.message("Enabling services")
  enabled = update(true, app, options)
  UI.success("Done! Enabled #{enabled} services.")
end
update(on, app, options) click to toggle source

rubocop:disable Metrics/PerceivedComplexity

# File lib/produce/service.rb, line 42
def update(on, app, options)
  updated = valid_services_for(options).count

  if options.app_group
    UI.message("\tApp Groups")

    if on
      app.update_service(Spaceship.app_service.app_group.on)
    else
      app.update_service(Spaceship.app_service.app_group.off)
    end
  end

  if options.apple_pay
    UI.message("\tApple Pay")

    if on
      app.update_service(Spaceship.app_service.apple_pay.on)
    else
      app.update_service(Spaceship.app_service.apple_pay.off)
    end
  end

  if options.associated_domains
    UI.message("\tAssociated Domains")

    if on
      app.update_service(Spaceship.app_service.associated_domains.on)
    else
      app.update_service(Spaceship.app_service.associated_domains.off)
    end
  end

  if options.data_protection
    UI.message("\tData Protection")

    if on
      case options.data_protection
      when "complete"
        app.update_service(Spaceship.app_service.data_protection.complete)
      when "unlessopen"
        app.update_service(Spaceship.app_service.data_protection.unless_open)
      when "untilfirstauth"
        app.update_service(Spaceship.app_service.data_protection.until_first_auth)
      else
        UI.user_error!("Unknown service '#{options.data_protection}'. Valid values: 'complete', 'unlessopen', 'untilfirstauth'")
      end
    else
      app.update_service(Spaceship.app_service.data_protection.off)
    end
  end

  if options.game_center
    UI.message("\tGame Center")

    if on
      app.update_service(Spaceship.app_service.game_center.on)
    else
      app.update_service(Spaceship.app_service.game_center.off)
    end
  end

  if options.healthkit
    UI.message("\tHealthKit")

    if on
      app.update_service(Spaceship.app_service.health_kit.on)
    else
      app.update_service(Spaceship.app_service.health_kit.off)
    end
  end

  if options.homekit
    UI.message("\tHomeKit")

    if on
      app.update_service(Spaceship.app_service.home_kit.on)
    else
      app.update_service(Spaceship.app_service.home_kit.off)
    end
  end

  if options.wireless_conf
    UI.message("\tWireless Accessory Configuration")

    if on
      app.update_service(Spaceship.app_service.wireless_accessory.on)
    else
      app.update_service(Spaceship.app_service.wireless_accessory.off)
    end
  end

  if options.icloud
    UI.message("\tiCloud")

    if on
      case options.icloud
      when "legacy"
        app.update_service(Spaceship.app_service.icloud.on)
        app.update_service(Spaceship.app_service.cloud_kit.xcode5_compatible)
      when "cloudkit"
        app.update_service(Spaceship.app_service.icloud.on)
        app.update_service(Spaceship.app_service.cloud_kit.cloud_kit)
      else
        UI.user_error!("Unknown service '#{options.icloud}'. Valid values: 'legacy', 'cloudkit'")
      end
    else
      app.update_service(Spaceship.app_service.icloud.off)
    end
  end

  if options.in_app_purchase
    UI.message("\tIn-App Purchase")

    if on
      app.update_service(Spaceship.app_service.in_app_purchase.on)
    else
      app.update_service(Spaceship.app_service.in_app_purchase.off)
    end
  end

  if options.inter_app_audio
    UI.message("\tInter-App Audio")

    if on
      app.update_service(Spaceship.app_service.inter_app_audio.on)
    else
      app.update_service(Spaceship.app_service.inter_app_audio.off)
    end
  end

  if options.passbook
    UI.message("\tPassbook")

    if on
      app.update_service(Spaceship.app_service.passbook.on)
    else
      app.update_service(Spaceship.app_service.passbook.off)
    end
  end

  if options.push_notification
    UI.message("\tPush Notifications")

    if on
      app.update_service(Spaceship.app_service.push_notification.on)
    else
      app.update_service(Spaceship.app_service.push_notification.off)
    end
  end

  if options.sirikit
    UI.message("\tSiriKit")

    if on
      app.update_service(Spaceship.app_service.siri_kit.on)
    else
      app.update_service(Spaceship.app_service.siri_kit.off)
    end
  end

  if options.vpn_conf
    UI.message("\tVPN Configuration")

    if on
      app.update_service(Spaceship.app_service.vpn_configuration.on)
    else
      app.update_service(Spaceship.app_service.vpn_configuration.off)
    end
  end

  updated
end
valid_services_for(options) click to toggle source
# File lib/produce/service.rb, line 35
def valid_services_for(options)
  allowed_keys = [:app_group, :apple_pay, :associated_domains, :data_protection, :game_center, :healthkit, :homekit,
                  :wireless_conf, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :sirikit, :vpn_conf]
  options.__hash__.select { |key, value| allowed_keys.include? key }
end