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 40 41 |
# 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 puts "add_file_to_project_and_targets file_path: #{file_path}" 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
50 51 52 53 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 50 def self.add_group_to_project(project, group_path, dir_path, directory_name) puts "add_group_to_project: group_path: #{group_path}, dir_path: #{dir_path}, directory_name: #{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
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 76 def self.clear_group(project, targets_name, group_path) module_group = self.retrieve_group_or_create_if_needed(group_path, nil, nil, project, false) puts "clear_group: group_path: #{group_path} module_group: #{module_group}" return unless module_group files_path = self.files_path_from_group(module_group, project) puts "clear_group: group_path: #{group_path} files_path: #{files_path}" 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
67 68 69 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 67 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
59 60 61 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 59 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
97 98 99 100 |
# File 'lib/generamba/helpers/xcodeproj_helper.rb', line 97 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 |