Class: Produce::DeveloperCenter

Inherits:
Object
  • Object
show all
Defined in:
produce/lib/produce/developer_center.rb

Constant Summary collapse

SERVICE_ON =
"on"
SERVICE_OFF =
"off"
SERVICE_COMPLETE =
"complete"
SERVICE_UNLESS_OPEN =
"unlessopen"
SERVICE_UNTIL_FIRST_LAUNCH =
"untilfirstauth"
SERVICE_LEGACY =
"legacy"
SERVICE_CLOUDKIT =
"cloudkit"
ALLOWED_SERVICES =
{
  access_wifi: [SERVICE_ON, SERVICE_OFF],
  app_group: [SERVICE_ON, SERVICE_OFF],
  apple_pay: [SERVICE_ON, SERVICE_OFF],
  associated_domains: [SERVICE_ON, SERVICE_OFF],
  auto_fill_credential: [SERVICE_ON, SERVICE_OFF],
  data_protection: [
    SERVICE_COMPLETE,
    SERVICE_UNLESS_OPEN,
    SERVICE_UNTIL_FIRST_LAUNCH
  ],
  game_center: [SERVICE_ON, SERVICE_OFF],
  health_kit: [SERVICE_ON, SERVICE_OFF],
  home_kit: [SERVICE_ON, SERVICE_OFF],
  hotspot: [SERVICE_ON, SERVICE_OFF],
  icloud: [SERVICE_LEGACY, SERVICE_CLOUDKIT],
  in_app_purchase: [SERVICE_ON, SERVICE_OFF],
  inter_app_audio: [SERVICE_ON, SERVICE_OFF],
  multipath: [SERVICE_ON, SERVICE_OFF],
  network_extension: [SERVICE_ON, SERVICE_OFF],
  nfc_tag_reading: [SERVICE_ON, SERVICE_OFF],
  personal_vpn: [SERVICE_ON, SERVICE_OFF],
  passbook: [SERVICE_ON, SERVICE_OFF],
  push_notification: [SERVICE_ON, SERVICE_OFF],
  siri_kit: [SERVICE_ON, SERVICE_OFF],
  vpn_configuration: [SERVICE_ON, SERVICE_OFF],
  wallet: [SERVICE_ON, SERVICE_OFF],
  wireless_accessory: [SERVICE_ON, SERVICE_OFF]
}

Instance Method Summary collapse

Instance Method Details

#app_identifierObject


119
120
121
# File 'produce/lib/produce/developer_center.rb', line 119

def app_identifier
  Produce.config[:app_identifier].to_s
end

#create_new_appObject


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'produce/lib/produce/developer_center.rb', line 49

def create_new_app
  ENV["CREATED_NEW_APP_ID"] = Time.now.to_i.to_s
  if app_exists?
    UI.success("[DevCenter] App '#{Produce.config[:app_identifier]}' already exists, nothing to do on the Dev Center")
    ENV["CREATED_NEW_APP_ID"] = nil
    # Nothing to do here
  else
    app_name = Produce.config[:app_name]
    UI.message("Creating new app '#{app_name}' on the Apple Dev Center")

    app = Spaceship.app.create!(bundle_id: app_identifier,
                                     name: app_name,
                                     enable_services: enable_services,
                                     mac: platform == "osx")

    if app.name != Produce.config[:app_name]
      UI.important("Your app name includes non-ASCII characters, which are not supported by the Apple Developer Portal.")
      UI.important("To fix this a unique (internal) name '#{app.name}' has been created for you. Your app's real name '#{Produce.config[:app_name]}'")
      UI.important("will still show up correctly on App Store Connect and the App Store.")
    end

    UI.message("Created app #{app.app_id}")

    UI.crash!("Something went wrong when creating the new app - it's not listed in the apps list") unless app_exists?

    ENV["CREATED_NEW_APP_ID"] = Time.now.to_i.to_s

    UI.success("Finished creating new app '#{app_name}' on the Dev Center")
  end

  return true
end

#enable_servicesObject


82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'produce/lib/produce/developer_center.rb', line 82

def enable_services
  app_service = Spaceship.app_service
  enabled_clean_options = {}

  # "enabled_features" was deprecated in favor of "enable_services"
  config_enabled_services = Produce.config[:enable_services] || Produce.config[:enabled_features]

  config_enabled_services.each do |k, v|
    if k.to_sym == :data_protection
      case v
      when SERVICE_COMPLETE
        enabled_clean_options[app_service.data_protection.complete.service_id] = app_service.data_protection.complete
      when SERVICE_UNLESS_OPEN
        enabled_clean_options[app_service.data_protection.unlessopen.service_id] = app_service.data_protection.unlessopen
      when SERVICE_UNTIL_FIRST_LAUNCH
        enabled_clean_options[app_service.data_protection.untilfirstauth.service_id] = app_service.data_protection.untilfirstauth
      end
    elsif k.to_sym == :icloud
      case v
      when SERVICE_LEGACY
        enabled_clean_options[app_service.cloud.on.service_id] = app_service.cloud.on
        enabled_clean_options[app_service.cloud_kit.xcode5_compatible.service_id] = app_service.cloud_kit.xcode5_compatible
      when SERVICE_CLOUDKIT
        enabled_clean_options[app_service.cloud.on.service_id] = app_service.cloud.on
        enabled_clean_options[app_service.cloud_kit.cloud_kit.service_id] = app_service.cloud_kit.cloud_kit
      end
    else
      if v == SERVICE_ON
        enabled_clean_options[app_service.send(k.to_s).on.service_id] = app_service.send(k.to_s).on
      else
        enabled_clean_options[app_service.send(k.to_s).off.service_id] = app_service.send(k.to_s).off
      end
    end
  end
  enabled_clean_options
end

#runObject


44
45
46
47
# File 'produce/lib/produce/developer_center.rb', line 44

def run
  
  create_new_app
end