class Deliver::SubmitForReview

Public Instance Methods

find_build(candidate_builds) click to toggle source
# File lib/deliver/submit_for_review.rb, line 71
def find_build(candidate_builds)
  build = nil
  candidate_builds.each do |b|
    if !build or b.upload_date > build.upload_date
      build = b
    end
  end

  unless build
    UI.error(candidate_builds)
    UI.crash!("Could not find build")
  end

  return build
end
select_build(options) click to toggle source
# File lib/deliver/submit_for_review.rb, line 30
def select_build(options)
  app = options[:app]
  v = app.edit_version

  if options[:build_number] and options[:build_number] != "latest"
    UI.message("Selecting existing build-number: #{options[:build_number]}")
    build = v.candidate_builds.detect { |a| a.build_version == options[:build_number] }
    unless build
      UI.user_error!("Build number: #{options[:build_number]} does not exist")
    end
  else
    UI.message("Selecting the latest build...")
    build = wait_for_build(app)
  end
  UI.message("Selecting build #{build.train_version} (#{build.build_version})...")

  v.select_build(build)
  v.save!

  UI.success("Successfully selected build")
end
submit!(options) click to toggle source
# File lib/deliver/submit_for_review.rb, line 3
def submit!(options)
  app = options[:app]
  select_build(options)

  UI.message("Submitting the app for review...")
  submission = app.create_submission

  # Set app submission information
  # Default Values
  submission.content_rights_contains_third_party_content = false
  submission.content_rights_has_rights = true
  submission.add_id_info_uses_idfa = false

  # User Values
  if options[:submission_information]
    options[:submission_information].each do |key, value|
      UI.message("Setting '#{key}' to '#{value}'...")
      submission.send("#{key}=", value)
    end
  end

  # Finalize app submission
  submission.complete!

  UI.success("Successfully submitted the app for review!")
end
wait_for_build(app) click to toggle source
# File lib/deliver/submit_for_review.rb, line 52
def wait_for_build(app)
  UI.user_error!("Could not find app with app identifier") unless app

  start = Time.now

  loop do
    build = find_build(app.latest_version.candidate_builds)
    return build if build.processing == false

    UI.message("Waiting iTunes Connect processing for build #{build.train_version} (#{build.build_version})... this might take a while...")
    if (Time.now - start) > (60 * 5)
      UI.message("")
      UI.message("You can tweet: \"iTunes Connect #iosprocessingtime #{((Time.now - start) / 60).round} minutes\"")
    end
    sleep 30
  end
  nil
end