class Deliver::Runner

Attributes

options[RW]

Public Class Methods

new(options, skip_auto_detection = {}) click to toggle source
# File lib/deliver/runner.rb, line 5
def initialize(options, skip_auto_detection = {})
  self.options = options
  login
  Deliver::DetectValues.new.run!(self.options, skip_auto_detection)
  FastlaneCore::PrintTable.print_values(config: options, hide_keys: [:app], mask_keys: ['app_review_information.demo_password'], title: "deliver #{Deliver::VERSION} Summary")
end

Public Instance Methods

login() click to toggle source
# File lib/deliver/runner.rb, line 12
def login
  UI.message("Login to iTunes Connect (#{options[:username]})")
  Spaceship::Tunes.login(options[:username])
  Spaceship::Tunes.select_team
  UI.message("Login successful")
end
run() click to toggle source
# File lib/deliver/runner.rb, line 19
def run
  verify_version if options[:app_version].to_s.length > 0
  upload_metadata

  has_binary = (options[:ipa] || options[:pkg])
  if !options[:skip_binary_upload] && !options[:build_number] && has_binary
    upload_binary
  end

  UI.success("Finished the upload to iTunes Connect")

  submit_for_review if options[:submit_for_review]
end
submit_for_review() click to toggle source
# File lib/deliver/runner.rb, line 87
def submit_for_review
  SubmitForReview.new.submit!(options)
end
upload_binary() click to toggle source

Upload the binary to iTunes Connect

# File lib/deliver/runner.rb, line 66
def upload_binary
  UI.message("Uploading binary to iTunes Connect")
  if options[:ipa]
    package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
      app_id: options[:app].apple_id,
      ipa_path: options[:ipa],
      package_path: "/tmp"
    )
  elsif options[:pkg]
    package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
      app_id: options[:app].apple_id,
      pkg_path: options[:pkg],
      package_path: "/tmp"
    )
  end

  transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider])
  result = transporter.upload(options[:app].apple_id, package_path)
  UI.user_error!("Could not upload binary to iTunes Connect. Check out the error above", show_github_issues: true) unless result
end
upload_metadata() click to toggle source

Upload all metadata, screenshots, pricing information, etc. to iTunes Connect

# File lib/deliver/runner.rb, line 49
def upload_metadata
  # First, collect all the things for the HTML Report
  screenshots = UploadScreenshots.new.collect_screenshots(options)
  UploadMetadata.new.load_from_filesystem(options)
  UploadMetadata.new.assign_defaults(options)

  # Validate
  validate_html(screenshots)

  # Commit
  UploadMetadata.new.upload(options)
  UploadScreenshots.new.upload(options, screenshots)
  UploadPriceTier.new.upload(options)
  UploadAssets.new.upload(options) # e.g. app icon
end
verify_version() click to toggle source

Make sure the version on iTunes Connect matches the one in the ipa If not, the new version will automatically be created

# File lib/deliver/runner.rb, line 35
def verify_version
  app_version = options[:app_version]
  UI.message("Making sure the latest version on iTunes Connect matches '#{app_version}' from the ipa file...")

  changed = options[:app].ensure_version!(app_version, platform: options[:pkg] ? 'osx' : 'ios')

  if changed
    UI.success("Successfully set the version to '#{app_version}'")
  else
    UI.success("'#{app_version}' is the latest version on iTunes Connect")
  end
end

Private Instance Methods

validate_html(screenshots) click to toggle source
# File lib/deliver/runner.rb, line 93
def validate_html(screenshots)
  return if options[:force]
  return if options[:skip_metadata] && options[:skip_screenshots]
  HtmlGenerator.new.run(options, screenshots)
end