Class: Xcake::XcodeprojContext

Inherits:
Object
  • Object
show all
Includes:
Context
Defined in:
lib/xcake/context/xcodeproj_context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Context

#native_object_for, #object_hash

Instance Attribute Details

#projectObject

Returns the value of attribute project.



8
9
10
# File 'lib/xcake/context/xcodeproj_context.rb', line 8

def project
  @project
end

Instance Method Details

#create_object_for(dsl_object) ⇒ Object

rubocop:disable Metrics/CyclomaticComplexity



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/xcake/context/xcodeproj_context.rb', line 10

def create_object_for(dsl_object) # rubocop:disable Metrics/CyclomaticComplexity
  case dsl_object
  when BuildPhase
    create_object_for_build_phase(dsl_object)
  when BuildRule
    create_object_for_build_rule(dsl_object)
  when Project
    create_object_for_project(dsl_object)
  when Target
    create_object_for_target(dsl_object)
  when Configuration
    create_object_for_configuration(dsl_object)
  when Scheme
    create_object_for_scheme(dsl_object)
  end
end

#create_object_for_build_phase(build_phase) ⇒ Object



27
28
29
# File 'lib/xcake/context/xcodeproj_context.rb', line 27

def create_object_for_build_phase(build_phase)
  @project.new(build_phase.build_phase_type)
end

#create_object_for_build_rule(_build_rule) ⇒ Object



31
32
33
# File 'lib/xcake/context/xcodeproj_context.rb', line 31

def create_object_for_build_rule(_build_rule)
  @project.new(Xcodeproj::Project::Object::PBXBuildRule)
end

#create_object_for_configuration(configuration) ⇒ Object



49
50
51
# File 'lib/xcake/context/xcodeproj_context.rb', line 49

def create_object_for_configuration(configuration)
  @project.new_configuration(configuration)
end

#create_object_for_project(project) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/xcake/context/xcodeproj_context.rb', line 35

def create_object_for_project(project)
  project_path = "./#{project.name}.xcodeproj"

  FileUtils.remove_dir(project_path) if File.exist?(project_path)

  @project = Xcode::Project.new(project_path, true)
  @project.setup_for_xcake
  @project
end

#create_object_for_scheme(_scheme) ⇒ Object



53
54
55
# File 'lib/xcake/context/xcodeproj_context.rb', line 53

def create_object_for_scheme(_scheme)
  Xcode::Scheme.new
end

#create_object_for_target(target) ⇒ Object



45
46
47
# File 'lib/xcake/context/xcodeproj_context.rb', line 45

def create_object_for_target(target)
  @project.new_target(target)
end

#file_reference_for_path(path) ⇒ Object



57
58
59
60
# File 'lib/xcake/context/xcodeproj_context.rb', line 57

def file_reference_for_path(path)
  pathname = Pathname.new path
  @project.file_reference_for_path(pathname)
end

#scheme_listObject



62
63
64
# File 'lib/xcake/context/xcodeproj_context.rb', line 62

def scheme_list
  @scheme_list ||= Xcode::SchemeList.new(@project)
end