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)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(out, build_configuration, build_directory, project_name) ⇒ XCodeTools

Returns a new instance of XCodeTools.



14
15
16
17
18
19
20
# File 'lib/thrust/ios/x_code_tools.rb', line 14

def initialize(out, build_configuration, build_directory, project_name)
  @out = out
  @git = Thrust::Git.new(out)
  @build_configuration = build_configuration
  @build_directory = build_directory
  @project_name = project_name
end

Class Method Details

.build_configurations(project_name) ⇒ Object

TODO: Backfill a test



4
5
6
7
8
9
10
11
12
# File 'lib/thrust/ios/x_code_tools.rb', line 4

def self.build_configurations(project_name) #TODO:  Backfill a test
  output = Thrust::Executor.capture_output_from_system("xcodebuild -project #{project_name}.xcodeproj -list")
  match = /Build Configurations:(.+?)\n\n/m.match(output)
  if match
    match[1].strip.split("\n").map { |line| line.strip }
  else
    []
  end
end

Instance Method Details

#build_configuration_directoryObject



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

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

#change_build_number(build_number) ⇒ Object



22
23
24
25
# File 'lib/thrust/ios/x_code_tools.rb', line 22

def change_build_number(build_number)
  Thrust::Executor.system_or_exit "agvtool new-version -all '#{build_number}'"
  @git.checkout_file('*.xcodeproj')
end

#clean_and_build_target(target, build_sdk) ⇒ Object



44
45
46
47
# File 'lib/thrust/ios/x_code_tools.rb', line 44

def clean_and_build_target(target, build_sdk)
  clean_build
  build_target(target, build_sdk)
end

#clean_buildObject



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

def clean_build
  @out.puts 'Cleaning...'
  run_xcode('clean')
  FileUtils.rm_rf(build_configuration_directory)
end

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



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

def cleanly_create_ipa(target, app_name, signing_identity, provision_search_query = nil)
  clean_build
  kill_simulator
  build_target(target, 'iphoneos')
  create_ipa(app_name, signing_identity, provision_search_query)
end