class Phoenx::TestableTargetBuilder

Public Instance Methods

add_schemes() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 222
def add_schemes
        @target_spec.schemes.each do |s|
                scheme = Xcodeproj::XCScheme.new
                scheme.configure_with_targets(self.target, @test_target)
                scheme.test_action.code_coverage_enabled = true
                scheme.add_build_target(self.target, true)
                scheme.add_test_target(@test_target)
                archive_configuration = self.target.build_configuration_list[s.archive_configuration]
                unless archive_configuration
                        abort "Invalid archive configuration assigned for scheme '#{s.name}' ".red + s.archive_configuration.bold
                end
                launch_configuration = self.target.build_configuration_list[s.launch_configuration]
                unless launch_configuration
                        abort "Invalid launch configuration assigned for scheme '#{s.name}' ".red + s.launch_configuration.bold
                end
                scheme.archive_action.build_configuration = archive_configuration
                scheme.launch_action.build_configuration = launch_configuration
                scheme.save_as(@project_spec.project_file_name, s.name, false)
        end
end
add_sub_projects() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 202
def add_sub_projects
        frameworks_group = @project.main_group.find_subpath(FRAMEWORKS_ROOT,false)
        @target_spec.dependencies.each do |dp|
                proj = nil
                if dp.path == nil
                        proj = @project
                else
                        abort "Missing dependency ".red + dp.path.bold unless File.exists?(dp.path)
                        file_ref = frameworks_group.find_file_by_path(dp.path)
                        unless file_ref != nil
                                frameworks_group.new_file(dp.path)
                        end
                        proj = Xcodeproj::Project::open(dp.path)
                end
                target = Phoenx.target_for_name(proj,dp.target_name)
                abort "Missing target for dependency '#{dp.path}' ".red + dp.target_name.bold unless target
                self.target.add_dependency(target)
        end
end
add_test_targets() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 243
def add_test_targets
        @target_spec.test_targets.each do |test_target_spec|
                builder = TestTargetBuilder.new(@target, @project, test_target_spec, @project_spec, @target_spec, self.framework_files)
                builder.build
                @test_target = builder.target
        end  
end
build() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 251
def build
        puts ">> Target ".green + @target_spec.name.bold unless @project_spec.targets.length == 1
        self.add_sources
        Phoenx::Target::HeaderBuilder.new(@project, @target, @target_spec).build
        self.add_resources
        self.add_config_files
        self.add_sub_projects
        self.add_system_dependencies
        self.add_frameworks_and_libraries
        self.add_build_phase_scripts
        self.add_test_targets
        self.generate_target_scheme
        self.add_schemes
        self.add_support_files
        self.sort_build_phases
        self.configure_target
end
generate_target_scheme() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 187
def generate_target_scheme
        # Generate main scheme
        scheme = Xcodeproj::XCScheme.new
        scheme.configure_with_targets(self.target, @test_target)
        scheme.test_action.code_coverage_enabled = true
        scheme.add_build_target(self.target, true)
        scheme.save_as(@project_spec.project_file_name, @target_spec.name, false)    
end
sort_build_phases() click to toggle source
# File lib/phoenx/use_cases/generate_target.rb, line 196
def sort_build_phases
        self.target.build_phases.objects.each do |phase|
                phase.sort
        end
end