class PhoneGap::Build::App

Constants

PATH

Attributes

create_method[RW]
debug[RW]
description[RW]
file[RW]
hydrates[RW]
keys[RW]
package[RW]
phonegap_version[RW]
private[RW]
status[RW]
title[RW]
version[RW]

Public Instance Methods

build() click to toggle source
# File lib/phone_gap/build/app.rb, line 27
def build
  ApiRequest.new.post("#{PATH}/#{id}/build")
end
build_complete?(params = {}) click to toggle source

@TODO fix this ugly method!

# File lib/phone_gap/build/app.rb, line 32
def build_complete?(params = {})
  complete = false
  error = false
  start_time = Time.now
  time_limit = start_time + (params[:poll_time_limit] || poll_time_limit)
  while !complete && (Time.now < time_limit) && !error
    response = ApiRequest.new.get("#{PATH}/#{id}")
    if response.success?
      json_object = JSON.parse(response.body)
      complete = json_object['status'].all? { |platform, status| %w(complete skip).include?(status) }
      error = json_object['status'].any? { |platform, status| status == 'error' }
    end
    sleep (params[:poll_interval] || poll_interval) unless complete or error
  end
  raise BuildError.new('An error occurred building at least one of the apps.') if error
  raise BuildError.new('Builds did not complete within the allotted time.') if !error && !complete
  populate_from_json(json_object)
  complete
end
download(params = {}) click to toggle source
# File lib/phone_gap/build/app.rb, line 52
def download(params = {})
  platforms_to_download = params[:platforms] ? params[:platforms] : built_platforms
  platforms_to_download.each do |platform|
    PhoneGap::Build::PackageDownloader.new.download(id, platform, params[:save_to])
  end
end
post_options() click to toggle source
# File lib/phone_gap/build/app.rb, line 17
def post_options
  if file
    data_attributes = creatable_attributes
    data_attributes.delete('@file')
    {query: {file: file, data: as_json(only: data_attributes, remove_nils: true)}, detect_mime_type: true}
  else
    {query: {data: as_json(only: creatable_attributes, remove_nils: true)}}
  end
end

Private Instance Methods

built_platforms() click to toggle source
# File lib/phone_gap/build/app.rb, line 61
def built_platforms
  status.delete_if { |package, build_status| build_status != 'complete' }.keys
end