Class: Generamba::XcodeprojHelper
- Inherits:
-
Object
- Object
- Generamba::XcodeprojHelper
- Defined in:
- lib/generamba/helpers/xcodeproj_helper.rb
Overview
Provides a number of helper methods for working with xcodeproj gem
Class Method Summary collapse
-
.add_file_to_project_and_targets(project, targets_name, group_path, dir_path, file_group_path, file_name, file_is_resource = false) ⇒ void
Adds a provided file to a specific Project and Target.
-
.add_group_to_project(project, group_path, dir_path, directory_name) ⇒ void
Adds a provided directory to a specific Project.
-
.clear_group(project, targets_name, group_path) ⇒ Void
Recursively clears children of the given group.
-
.is_bundle_resource?(resource_name) ⇒ TrueClass or FalseClass
File is a resource.
-
.is_compile_source?(file_name) ⇒ TrueClass or FalseClass
File is a compiled source.
-
.module_with_group_path_already_exists(project, group_path) ⇒ TrueClass or FalseClass
Finds a group in a xcodeproj file with a given path.
-
.obtain_project(project_name) ⇒ Xcodeproj::Project
Returns a PBXProject class for a given name.
Class Method Details
.add_file_to_project_and_targets(project, targets_name, group_path, dir_path, file_group_path, file_name, file_is_resource = false) ⇒ void
This method returns an undefined value.
Adds a provided file to a specific Project and Target
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 22 def self.add_file_to_project_and_targets(project, targets_name, group_path, dir_path, file_group_path, file_name, file_is_resource = false) file_path = dir_path file_path = file_path.join(file_group_path) if file_group_path file_path = file_path.join(file_name) if file_name module_group = self.retrieve_group_or_create_if_needed(group_path, dir_path, file_group_path, project, true) xcode_file = module_group.new_file(File.absolute_path(file_path)) targets_name.each do |target| xcode_target = obtain_target(target, project) if file_is_resource || self.is_bundle_resource?(file_name) xcode_target.add_resources([xcode_file]) elsif self.is_compile_source?(file_name) xcode_target.add_file_references([xcode_file]) end end end |
.add_group_to_project(project, group_path, dir_path, directory_name) ⇒ void
This method returns an undefined value.
Adds a provided directory to a specific Project
48 49 50 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 48 def self.add_group_to_project(project, group_path, dir_path, directory_name) self.retrieve_group_or_create_if_needed(group_path, dir_path, directory_name, project, true) end |
.clear_group(project, targets_name, group_path) ⇒ Void
Recursively clears children of the given group
73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 73 def self.clear_group(project, targets_name, group_path) module_group = self.retrieve_group_or_create_if_needed(group_path, nil, nil, project, false) return unless module_group files_path = self.files_path_from_group(module_group, project) return unless files_path files_path.each do |file_path| self.remove_file_by_file_path(file_path, targets_name, project) end module_group.clear end |
.is_bundle_resource?(resource_name) ⇒ TrueClass or FalseClass
File is a resource
64 65 66 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 64 def self.is_bundle_resource?(resource_name) File.extname(resource_name) == '.xib' || File.extname(resource_name) == '.storyboard' end |
.is_compile_source?(file_name) ⇒ TrueClass or FalseClass
File is a compiled source
56 57 58 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 56 def self.is_compile_source?(file_name) File.extname(file_name) == '.m' || File.extname(file_name) == '.swift' || File.extname(file_name) == '.mm' end |
.module_with_group_path_already_exists(project, group_path) ⇒ TrueClass or FalseClass
Finds a group in a xcodeproj file with a given path
92 93 94 95 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 92 def self.module_with_group_path_already_exists(project, group_path) module_group = self.retrieve_group_or_create_if_needed(group_path, nil, nil, project, false) module_group.nil? ? false : true end |
.obtain_project(project_name) ⇒ Xcodeproj::Project
Returns a PBXProject class for a given name
8 9 10 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 8 def self.obtain_project(project_name) Xcodeproj::Project.open(project_name) end |