class XcodeArchiveCache::Injection::HeadersMover
Attributes
build_settings_interpolator[R]
@return [XcodeArchiveCache::BuildSettings::StringInterpolator]
modulemap_header_path_extractor[R]
@return [XcodeArchiveCache::Modulemap::HeaderPathExtractor]
storage[R]
@return [Storage]
Public Class Methods
new(storage)
click to toggle source
@param [Storage] storage
# File lib/injection/headers_mover.rb, line 9 def initialize(storage) @storage = storage @build_settings_interpolator = XcodeArchiveCache::BuildSettings::StringInterpolator.new @modulemap_header_path_extractor = XcodeArchiveCache::Modulemap::HeaderPathExtractor.new end
Public Instance Methods
prepare_headers_for_injection(node)
click to toggle source
@param [XcodeArchiveCache::BuildGraph::Node] node
# File lib/injection/headers_mover.rb, line 17 def prepare_headers_for_injection(node) debug("checking #{node.name} headers") header_count = 0 node.native_target.copy_files_build_phases.each do |build_phase| file_paths = build_phase.files .map { |build_file| get_real_path(build_file) } .compact .uniq .select { |path| File.extname(path) == ".h" } destination_path = get_destination_dir_path(node, build_phase) storage.store_headers(node, destination_path, file_paths) header_count += file_paths.length end if node.has_static_library_product? headers_file_paths = node.native_target .headers_build_phase .files .select { |file| file.settings && file.settings["ATTRIBUTES"].include?("Public") } .map { |header| get_real_path(header) } .uniq storage.store_default_headers(node, headers_file_paths) header_count += headers_file_paths.length end modulemap_file_path = node.original_modulemap_file_path if modulemap_file_path && File.exist?(modulemap_file_path) header_file_paths = modulemap_header_path_extractor.extract_all_paths(modulemap_file_path) storage.store_modulemap_headers(node, header_file_paths) header_count += header_file_paths.length end debug("found #{header_count} header(s)") end
Private Instance Methods
get_destination_dir_path(node, build_phase)
click to toggle source
@param [XcodeArchiveCache::BuildGraph::Node] node @param [Xcodeproj::Project::Object::PBXCopyFilesBuildPhase] build_phase
@return [String]
# File lib/injection/headers_mover.rb, line 84 def get_destination_dir_path(node, build_phase) build_settings_interpolator.interpolate(build_phase.dst_path, node.build_settings) end
get_real_path(build_file)
click to toggle source
@param [Xcodeproj::Project::Object::PBXBuildFile] build_file
@return [String]
# File lib/injection/headers_mover.rb, line 73 def get_real_path(build_file) if build_file.file_ref.is_a?(Xcodeproj::Project::Object::PBXFileReference) build_file.file_ref.real_path.to_s end end