class Produce::ItunesConnect
Public Instance Methods
create_new_app()
click to toggle source
# File lib/produce/itunes_connect.rb, line 15 def create_new_app application = fetch_application if application UI.success "[iTC] App '#{Produce.config[:app_identifier]}' already exists (#{application.apple_id}), nothing to do on iTunes Connect" # Nothing to do here else UI.success "Creating new app '#{Produce.config[:app_name]}' on iTunes Connect" Produce.config[:bundle_identifier_suffix] = '' unless wildcard_bundle? generated_app = Spaceship::Tunes::Application.create!(name: Produce.config[:app_name], primary_language: language, version: Produce.config[:app_version] || "1.0", sku: Produce.config[:sku].to_s, # might be an int bundle_id: app_identifier, bundle_id_suffix: Produce.config[:bundle_identifier_suffix], company_name: Produce.config[:company_name], platform: Produce.config[:platform]) UI.crash!("Something went wrong when creating the new app on iTC") if generated_app["adamId"].to_s.empty? application = fetch_application counter = 0 while application.nil? counter += 1 UI.crash!("Couldn't find newly created app on iTunes Connect - please check the website for more information") if counter == 200 # Since 2016-08-10 iTunes Connect takes some time to actually list the newly created application # We have no choice but to poll to see if the newly created app is already available UI.message("Waiting for the newly created application to be available on iTunes Connect...") sleep 15 application = fetch_application end UI.crash!("Something went wrong when creating the new app - it's not listed in the App's list") unless application UI.success "Successfully created new app '#{Produce.config[:app_name]}' on iTunes Connect with ID #{application.apple_id}" end return Spaceship::Application.find(@full_bundle_identifier, mac: Produce.config[:platform] == "osx").apple_id end
run()
click to toggle source
# File lib/produce/itunes_connect.rb, line 5 def run @full_bundle_identifier = app_identifier @full_bundle_identifier.gsub!('*', Produce.config[:bundle_identifier_suffix].to_s) if wildcard_bundle? Spaceship::Tunes.login(Produce.config[:username], nil) Spaceship::Tunes.client.select_team create_new_app end
Private Instance Methods
app_identifier()
click to toggle source
# File lib/produce/itunes_connect.rb, line 67 def app_identifier Produce.config[:app_identifier].to_s end
fetch_application()
click to toggle source
# File lib/produce/itunes_connect.rb, line 59 def fetch_application Spaceship::Application.find(@full_bundle_identifier) end
language()
click to toggle source
Makes sure to get the value for the language Instead of using the user's value `UK English` spaceship should send `English_UK` to the server
# File lib/produce/itunes_connect.rb, line 74 def language @language = Produce.config[:language] converted = Spaceship::Tunes::LanguageConverter.from_itc_readable_to_itc(@language) @language = converted if converted # overwrite it with the actual value unless AvailableDefaultLanguages.all_languages.include?(@language) UI.user_error!("Please enter one of available languages: #{AvailableDefaultLanguages.all_languages}") end return @language end
wildcard_bundle?()
click to toggle source
# File lib/produce/itunes_connect.rb, line 63 def wildcard_bundle? return app_identifier.end_with?("*") end