Class: Xcake::Xcode::Project
- Inherits:
-
Xcodeproj::Project
- Object
- Xcodeproj::Project
- Xcake::Xcode::Project
- Defined in:
- lib/xcake/xcode/project.rb
Overview
Special subclass of the Xcodeproj::Project which adds capabilities and helper methods xcake need
Instance Method Summary collapse
- #archive_version ⇒ Object
-
#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.
- #classes ⇒ Object
-
#file_reference_for_path(path) ⇒ PBXFileReference
Creates a new xcode file reference for a path.
-
#find_ui_test_target_for_target(target) ⇒ Target
Finds a ui test target for a xcode target.
-
#find_unit_test_target_for_target(target) ⇒ Target
Finds a unit test target for a xcode target.
-
#group_for_file_reference_path(path) ⇒ PBXGroup
Finds or Creates a new xcode group for a path.
- #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.
-
#setup_for_xcake ⇒ Object
Configures the Project for use with Xcake.
-
#variant_group_for_path(path) ⇒ PBXVariantGroup
private
Creates or finds a new xcode variant group for a path.
Instance Method Details
#archive_version ⇒ Object
52 53 54 |
# File 'lib/xcake/xcode/project.rb', line 52 def archive_version Xcodeproj::Constants::LAST_KNOWN_ARCHIVE_VERSION.to_s end |
#attributes ⇒ Hash
Returns the attributes of the project.
12 13 14 |
# File 'lib/xcake/xcode/project.rb', line 12 def attributes root_object.attributes end |
#class_prefix ⇒ String
Returns the class name for the project.
18 19 20 |
# File 'lib/xcake/xcode/project.rb', line 18 def class_prefix attributes['CLASSPREFIX'] end |
#class_prefix=(class_prefix) ⇒ String
Sets the class prefix for the project
28 29 30 |
# File 'lib/xcake/xcode/project.rb', line 28 def class_prefix=(class_prefix) attributes['CLASSPREFIX'] = class_prefix end |
#classes ⇒ Object
56 57 58 |
# File 'lib/xcake/xcode/project.rb', line 56 def classes {} end |
#file_reference_for_path(path) ⇒ PBXFileReference
Creates a new xcode file reference for a path
=> path of the file reference from the source root
124 125 126 127 128 129 130 131 132 133 |
# 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 ref = group.find_file_by_path file_path.to_s return ref if ref group.new_reference(file_path.to_s) end |
#find_ui_test_target_for_target(target) ⇒ Target
Finds a ui test target for a xcode target
210 211 212 213 214 |
# File 'lib/xcake/xcode/project.rb', line 210 def find_ui_test_target_for_target(target) targets.find do |t| t.name == "#{target.name}UITests" end end |
#find_unit_test_target_for_target(target) ⇒ Target
Finds a unit test target for a xcode target
197 198 199 200 201 |
# File 'lib/xcake/xcode/project.rb', line 197 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) ⇒ PBXGroup
Finds or Creates a new xcode group for a path
=> path of the group from the source root
142 143 144 145 146 |
# File 'lib/xcake/xcode/project.rb', line 142 def group_for_file_reference_path(path) group = variant_group_for_path(path) group ||= group_for_path(path) group end |
#group_for_path(path) ⇒ Object (private)
180 181 182 183 184 185 186 |
# File 'lib/xcake/xcode/project.rb', line 180 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, target.type) native_target.product_reference = product targets << native_target native_target end |
#object_version ⇒ Object
48 49 50 |
# File 'lib/xcake/xcode/project.rb', line 48 def object_version Xcodeproj::Constants::DEFAULT_OBJECT_VERSION.to_s end |
#organization ⇒ String
Returns the organization for the project.
34 35 36 |
# File 'lib/xcake/xcode/project.rb', line 34 def organization attributes['ORGANIZATIONNAME'] end |
#organization=(organization) ⇒ SchemeList
Sets the organization for the project
44 45 46 |
# File 'lib/xcake/xcode/project.rb', line 44 def organization=(organization) attributes['ORGANIZATIONNAME'] = organization 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) ⇒ PBXVariantGroup (private)
this method will return nil if the path isn't a valid
Creates or finds a new xcode variant group for a path
variant group path
=> path of the variant group from the source root
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/xcake/xcode/project.rb', line 160 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 |