Class: ApiGenHelper::GroupGenerator
- Inherits:
-
Object
- Object
- ApiGenHelper::GroupGenerator
- Defined in:
- lib/api_gen_helper/group_generator.rb
Instance Method Summary collapse
- #added_references_recursivly_for_target(target, group) ⇒ Object
-
#create_file_reference(group, path) ⇒ Xcodeproj::Project::Object::PBXFileReference
Create file reference for specific group.
-
#create_group_from_directory(project, target, name, path) ⇒ Xcodeproj::Project::Object::PBXGroup
Create group for specific target and project.
- #generate_group(project_path, group_path, target_name) ⇒ Object
- #is_bundle_resource?(resource_name) ⇒ Boolean
- #is_compile_source?(file_name) ⇒ Boolean
-
#obtain_project(project_name) ⇒ Xcodeproj::Project::Object::PBXProject
Open xcodoproj file.
-
#prepare_main_group(group, directory) ⇒ Object
Recursively fills the group with files and groups.
- #remove_build_file_recursivly(group) ⇒ Object
Instance Method Details
#added_references_recursivly_for_target(target, group) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/api_gen_helper/group_generator.rb', line 46 def added_references_recursivly_for_target(target, group) group.children.each do |child| if child.isa == "PBXFileReference" target.add_file_references([child]) else added_references_recursivly_for_target(target, child) end end end |
#create_file_reference(group, path) ⇒ Xcodeproj::Project::Object::PBXFileReference
Create file reference for specific group
99 100 101 |
# File 'lib/api_gen_helper/group_generator.rb', line 99 def create_file_reference(group, path) file_reference = Xcodeproj::Project::Object::FileReferencesFactory.new_reference(group, path, :group) end |
#create_group_from_directory(project, target, name, path) ⇒ Xcodeproj::Project::Object::PBXGroup
Create group for specific target and project
82 83 84 |
# File 'lib/api_gen_helper/group_generator.rb', line 82 def create_group_from_directory(project, target, name, path) group = project[target].new_group(name, path, :group) end |
#generate_group(project_path, group_path, target_name) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/api_gen_helper/group_generator.rb', line 9 def generate_group(project_path, group_path, target_name) project = obtain_project(project_path) target_name = target_name group_path = group_path group_name = URI(group_path).path.split('/').last group = project[group_path] if !group.nil? remove_build_file_recursivly(group) group.clear group.remove_from_project end main_group = create_group_from_directory(project, target_name, group_name, group_path) prepare_main_group(main_group, group_path) project.targets.each do |proj_target| if proj_target.name == target_name added_references_recursivly_for_target(proj_target, main_group) end end project.save() end |
#is_bundle_resource?(resource_name) ⇒ Boolean
107 108 109 |
# File 'lib/api_gen_helper/group_generator.rb', line 107 def is_bundle_resource?(resource_name) File.extname(resource_name) == '.xib' || File.extname(resource_name) == '.storyboard' end |
#is_compile_source?(file_name) ⇒ Boolean
103 104 105 |
# File 'lib/api_gen_helper/group_generator.rb', line 103 def is_compile_source?(file_name) File.extname(file_name) == '.m' || File.extname(file_name) == '.swift' || File.extname(file_name) == '.mm' end |
#obtain_project(project_name) ⇒ Xcodeproj::Project::Object::PBXProject
Open xcodoproj file
90 91 92 |
# File 'lib/api_gen_helper/group_generator.rb', line 90 def obtain_project(project_name) Xcodeproj::Project.open(project_name) end |
#prepare_main_group(group, directory) ⇒ Object
Recursively fills the group with files and groups
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/api_gen_helper/group_generator.rb', line 59 def prepare_main_group(group, directory) Dir.entries(directory).each do |file_name| next if file_name =~ /^\./ if File.file? File.join(directory, file_name) xcode_file_reference = create_file_reference(group, file_name) group<< xcode_file_reference end if File.directory? File.join(directory, file_name) sub_dir = File.join(directory, file_name) child_group = group.new_group(file_name, file_name) prepare_main_group(child_group, sub_dir) end end end |
#remove_build_file_recursivly(group) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/api_gen_helper/group_generator.rb', line 34 def remove_build_file_recursivly(group) group.children.each do |child| if child.isa == "PBXFileReference" child.build_files.each do |build_file| build_file.remove_from_project end else remove_build_file_recursivly(child) end end end |