class RSwift::GroupReferencesManager
Attributes
files_references_manager[RW]
Public Class Methods
new(files_references_manager)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 6 def initialize(files_references_manager) @files_references_manager = files_references_manager end
Public Instance Methods
cleanup_build_files(target)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 92 def cleanup_build_files(target) invalid_build_sources = target.source_build_phase.files.select { |file| file.file_ref == nil } invalid_build_sources.each { |file| target.source_build_phase.remove_build_file(file) } invalid_resources = target.resources_build_phase.files.select { |file| file.file_ref == nil } invalid_resources.each { |file| target.resources_build_phase.remove_build_file(file) } end
cleanup_invalid_references(group)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 58 def cleanup_invalid_references(group) compile_sources_extensions = RSwift::Constants::COMPILE_SOURCES_EXTENSIONS resources_extensions = RSwift::Constants::RESOURCES_EXTENSIONS invalid_files_refs = group.files invalid_groups_refs = group.groups entries = Dir.glob("#{group.real_path.to_path}/*") entries.each do |entry| basename = File.basename entry extname = File.extname entry if compile_sources_extensions.include? extname file_ref = invalid_files_refs.find { |invalid_file_ref| invalid_file_ref.path == basename } invalid_files_refs.delete(file_ref) elsif resources_extensions.include? extname file_ref = invalid_files_refs.find { |invalid_file_ref| invalid_file_ref.path == basename } invalid_files_refs.delete(file_ref) elsif File.file? entry file_ref = invalid_files_refs.find { |invalid_file_ref| invalid_file_ref.path == basename } invalid_files_refs.delete(file_ref) else group_ref = invalid_groups_refs.find { |invalid_group_ref| invalid_group_ref.path == basename } invalid_groups_refs.delete(group_ref) end end invalid_files_refs.each { |file_ref| file_ref.remove_from_project } invalid_groups_refs.each do |group_ref| group_ref.clear group_ref.remove_from_project end end
update_directory_references(group, target)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 31 def update_directory_references(group, target) compile_sources_extensions = RSwift::Constants::COMPILE_SOURCES_EXTENSIONS resources_extensions = RSwift::Constants::RESOURCES_EXTENSIONS entries = Dir.glob("#{group.real_path.to_path}/*") directory_entries = entries.select { |entry| !File.file? entry } directory_entries.each do |entry| basename = File.basename entry extname = File.extname entry if compile_sources_extensions.include? extname if extname != '.xcdatamodeld' file_reference = group.file_for_path(basename) target.source_build_phase.add_file_reference(file_reference, true) else add_xcdatamodel(entry, group, target) end elsif resources_extensions.include? extname file_reference = group.file_for_path(basename) target.resources_build_phase.add_file_reference(file_reference, true) else group_reference = group.group_for_path(basename) @files_references_manager.update_target_references(group_reference, target) end end end
update_files_references(group, target)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 10 def update_files_references(group, target) compile_sources_extensions = RSwift::Constants::COMPILE_SOURCES_EXTENSIONS resources_extensions = RSwift::Constants::RESOURCES_EXTENSIONS entries = Dir.glob("#{group.real_path.to_path}/*") file_entries = entries.select { |entry| File.file? entry } file_entries.each do |entry| basename = File.basename entry extname = File.extname entry file_reference = group.file_for_path(basename) if basename == 'Info.plist' || extname == '.xcdatamodel' next elsif compile_sources_extensions.include? extname target.source_build_phase.add_file_reference(file_reference, true) elsif resources_extensions.include? extname target.resources_build_phase.add_file_reference(file_reference, true) end end end
Private Instance Methods
add_xcdatamodel(entry, group, target)
click to toggle source
# File lib/rswift/group_references_manager.rb, line 102 def add_xcdatamodel(entry, group, target) basename = File.basename entry extname = File.extname entry version_group = group.version_groups.find { |version_group| version_group.path == basename } if version_group == nil file_reference = group.file_for_path(basename) target.source_build_phase.add_file_reference(file_reference, true) version_group = group.version_groups.find { |version_group| version_group.path == basename } @files_references_manager.update_target_references(version_group, target) end end