Class: Xcake::Xcode::Project
- Inherits:
-
Xcodeproj::Project
- Object
- Xcodeproj::Project
- Xcake::Xcode::Project
- Defined in:
- lib/xcake/xcode/project.rb
Instance Method Summary collapse
-
#attributes ⇒ Hash
The attributes of the project.
-
#class_prefix ⇒ String
The class name for the project.
-
#class_prefix=(class_prefix) ⇒ String
Sets the class prefix for the project.
-
#file_reference_for_path(path) ⇒ PBXFileReference
Creates a new xcode file reference from the node.
-
#find_unit_test_target_for_target(target) ⇒ Target
Finds a unit test target for a xcode target.
- #group_for_file_reference_path(path) ⇒ Object
- #group_for_path(path) ⇒ Object private
-
#new_configuration(_configuration) ⇒ Configurarion
Creates a new xcode configuration from the configuration DSL.
-
#new_target(target) ⇒ Target
Creates a new xcode target from the target DSL.
- #object_version ⇒ Object
-
#organization ⇒ String
The organization for the project.
-
#organization=(organization) ⇒ SchemeList
Sets the organization for the project.
- #recreate_user_schemes ⇒ Object
-
#scheme_list ⇒ SchemeList
The scheme list.
-
#setup_for_xcake ⇒ Object
Configures the Project for use with Xcake.
- #variant_group_for_path(path) ⇒ Object private
Instance Method Details
#attributes ⇒ Hash
Returns the attributes of the project.
9 10 11 |
# File 'lib/xcake/xcode/project.rb', line 9 def attributes root_object.attributes end |
#class_prefix ⇒ String
Returns the class name for the project.
15 16 17 |
# File 'lib/xcake/xcode/project.rb', line 15 def class_prefix attributes['CLASSPREFIX'] end |
#class_prefix=(class_prefix) ⇒ String
Sets the class prefix for the project
25 26 27 |
# File 'lib/xcake/xcode/project.rb', line 25 def class_prefix=(class_prefix) attributes['CLASSPREFIX'] = class_prefix end |
#file_reference_for_path(path) ⇒ PBXFileReference
Creates a new xcode file reference from the node
=> path of the file reference from the source root
124 125 126 127 128 129 130 |
# File 'lib/xcake/xcode/project.rb', line 124 def file_reference_for_path(path) group = group_for_file_reference_path(path) group_path = Pathname.new group.dirname file_path = path.cleanpath.relative_path_from group_path group.new_reference(file_path.to_s) end |
#find_unit_test_target_for_target(target) ⇒ Target
Finds a unit test target for a xcode target
176 177 178 179 180 |
# File 'lib/xcake/xcode/project.rb', line 176 def find_unit_test_target_for_target(target) targets.find do |t| t.name == "#{target.name}Tests" end end |
#group_for_file_reference_path(path) ⇒ Object
132 133 134 135 136 137 |
# File 'lib/xcake/xcode/project.rb', line 132 def group_for_file_reference_path(path) clean_path = path.cleanpath group = variant_group_for_path(path) group = group_for_path(path) unless group group end |
#group_for_path(path) ⇒ Object (private)
160 161 162 163 164 165 |
# File 'lib/xcake/xcode/project.rb', line 160 def group_for_path(path) group_path = path.dirname.cleanpath return main_group unless group_path.to_s != '.' main_group.child_for_path(group_path.to_s) end |
#new_configuration(_configuration) ⇒ Configurarion
Creates a new xcode configuration from the configuration DSL
113 114 115 |
# File 'lib/xcake/xcode/project.rb', line 113 def new_configuration(_configuration) new(Xcodeproj::Project::Object::XCBuildConfiguration) end |
#new_target(target) ⇒ Target
Creates a new xcode target from the target DSL
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/xcake/xcode/project.rb', line 85 def new_target(target) native_target = new(Xcodeproj::Project::Object::PBXNativeTarget) native_target.name = target.name native_target.product_name = target.name case target.type when Symbol native_target.product_type = Xcodeproj::Constants::PRODUCT_TYPE_UTI[target.type] when String native_target.product_type = target.type end native_target.build_configuration_list = new(Xcodeproj::Project::Object::XCConfigurationList) product = products_group.new_product_ref_for_target(native_target.product_name, native_target.product_type) native_target.product_reference = product targets << native_target native_target end |
#object_version ⇒ Object
51 52 53 |
# File 'lib/xcake/xcode/project.rb', line 51 def object_version Xcodeproj::Constants::DEFAULT_OBJECT_VERSION.to_s end |
#organization ⇒ String
Returns the organization for the project.
31 32 33 |
# File 'lib/xcake/xcode/project.rb', line 31 def organization attributes['ORGANIZATIONNAME'] end |
#organization=(organization) ⇒ SchemeList
Sets the organization for the project
41 42 43 |
# File 'lib/xcake/xcode/project.rb', line 41 def organization=(organization) attributes['ORGANIZATIONNAME'] = organization end |
#recreate_user_schemes ⇒ Object
55 56 57 58 |
# File 'lib/xcake/xcode/project.rb', line 55 def recreate_user_schemes(*) scheme_list.recreate_schemes scheme_list.save(path) end |
#scheme_list ⇒ SchemeList
Returns the scheme list.
47 48 49 |
# File 'lib/xcake/xcode/project.rb', line 47 def scheme_list @scheme_list ||= SchemeList.new(self) end |
#setup_for_xcake ⇒ Object
Configures the Project for use with Xcake. This makes sure we have sensible defaults and it as clean as possible.
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/xcake/xcode/project.rb', line 64 def setup_for_xcake root_object.remove_referrer(self) if root_object root_object = new(Project::Object::PBXProject) root_object.add_referrer(self) config_list = new(XCConfigurationList) root_object.build_configuration_list = config_list root_object.main_group = new(PBXGroup) root_object.product_ref_group = root_object.main_group.new_group('Products') @root_object = root_object end |
#variant_group_for_path(path) ⇒ Object (private)
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/xcake/xcode/project.rb', line 141 def variant_group_for_path(path) group_path = path.dirname.cleanpath base_name = group_path.basename return nil unless base_name.to_s.include?('.lproj') parent_group = group_for_path(group_path) group = parent_group[path.basename.to_s] unless group group = new(PBXVariantGroup) group.name = path.basename.to_s group.set_source_tree(:group) parent_group.children << group end group end |