Class: Thrust::IOS::XCodeTools

Inherits:
Object
  • Object
show all
Defined in:
lib/thrust/ios/x_code_tools.rb

Constant Summary collapse

ProvisioningProfileNotFound =
Class.new(StandardError)
ProvisioningProfileNotEmbedded =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initialize(thrust_executor, out, build_configuration, build_directory, options = {}) ⇒ XCodeTools

Returns a new instance of XCodeTools.



7
8
9
10
11
12
13
14
15
16
# File 'lib/thrust/ios/x_code_tools.rb', line 7

def initialize(thrust_executor, out, build_configuration, build_directory, options = {})
  @thrust_executor = thrust_executor
  @out = out
  @git = Thrust::Git.new(@out, @thrust_executor)
  @build_configuration = build_configuration
  @build_directory = build_directory
  @project_name = options[:project_name]
  @workspace_name = options[:workspace_name]
  raise "project_name OR workspace_name required" unless @project_name.nil? ^ @workspace_name.nil?
end

Instance Method Details

#build_configuration_directoryObject



28
29
30
# File 'lib/thrust/ios/x_code_tools.rb', line 28

def build_configuration_directory
  "#{@build_directory}/#{@build_configuration}-iphoneos"
end

#build_scheme_or_target(scheme_or_target, build_sdk, architecture = nil) ⇒ Object



37
38
39
40
# File 'lib/thrust/ios/x_code_tools.rb', line 37

def build_scheme_or_target(scheme_or_target, build_sdk, architecture=nil)
  @out.puts "Building..."
  run_xcode(build_sdk, scheme_or_target, architecture)
end

#clean_buildObject



32
33
34
35
# File 'lib/thrust/ios/x_code_tools.rb', line 32

def clean_build
  @out.puts 'Cleaning...'
  FileUtils.rm_rf(@build_directory)
end

#cleanly_create_ipa(target, app_name, signing_identity, provision_search_query = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/thrust/ios/x_code_tools.rb', line 18

def cleanly_create_ipa(target, app_name, signing_identity, provision_search_query = nil)
  clean_build
  kill_simulator
  build_scheme_or_target(target, 'iphoneos')
  ipa_name = create_ipa(app_name, signing_identity, provision_search_query)
  verify_provision(app_name, provision_search_query)

  return ipa_name
end

#kill_simulatorObject



59
60
61
62
63
64
# File 'lib/thrust/ios/x_code_tools.rb', line 59

def kill_simulator
  @out.puts('Killing simulator...')
  @thrust_executor.system %q[killall -m -KILL "gdb"]
  @thrust_executor.system %q[killall -m -KILL "otest"]
  @thrust_executor.system %q[killall -m -KILL "iPhone Simulator"]
end

#test(scheme, build_configuration, os_version, device_name, timeout, build_dir) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/thrust/ios/x_code_tools.rb', line 42

def test(scheme, build_configuration, os_version, device_name, timeout, build_dir)
  destination = "OS=#{os_version},name=#{device_name}"
  timeout ||= "30"

  cmd = [
    "xcodebuild",
    "test",
    "-scheme '#{scheme}'",
    "-configuration '#{build_configuration}'",
    "-destination '#{destination}'",
    "-destination-timeout '#{timeout}'",
    "SYMROOT='#{build_dir}'"
  ].join(' ')

  @thrust_executor.check_command_for_failure(cmd)
end