Class: XcodeArchiveCache::BuildGraph::NativeTargetFinder
- Inherits:
-
Object
- Object
- XcodeArchiveCache::BuildGraph::NativeTargetFinder
- Defined in:
- lib/build_graph/native_target_finder.rb
Instance Method Summary collapse
- #find_for_dependency(dependency) ⇒ Xcodeproj::Project::Object::PBXNativeTarget
- #find_for_file(file) ⇒ Xcodeproj::Project::Object::PBXNativeTarget
- #find_for_product_name(product_name) ⇒ Object
-
#initialize(projects) ⇒ NativeTargetFinder
constructor
A new instance of NativeTargetFinder.
- #set_platform_name_filter(platform_name) ⇒ Object
Constructor Details
#initialize(projects) ⇒ NativeTargetFinder
Returns a new instance of NativeTargetFinder.
7 8 9 10 11 12 13 14 15 |
# File 'lib/build_graph/native_target_finder.rb', line 7 def initialize(projects) @all_targets = projects .map {|project| unnest(project)} .flatten .uniq .map(&:native_targets) .flatten .select {|target| !target.test_target_type? } end |
Instance Method Details
#find_for_dependency(dependency) ⇒ Xcodeproj::Project::Object::PBXNativeTarget
27 28 29 30 31 |
# File 'lib/build_graph/native_target_finder.rb', line 27 def find_for_dependency(dependency) # targets from embedded projects are proxied target = dependency.target ? dependency.target : dependency.target_proxy.proxied_object target.is_a?(Xcodeproj::Project::Object::PBXNativeTarget) ? target : nil end |
#find_for_file(file) ⇒ Xcodeproj::Project::Object::PBXNativeTarget
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/build_graph/native_target_finder.rb', line 37 def find_for_file(file) if file.file_ref.is_a?(Xcodeproj::Project::Object::PBXReferenceProxy) project = file.file_ref.remote_ref.container_portal_object product_reference_uuid = file.file_ref.remote_ref.remote_global_id_string find_with_product_ref_uuid(project, product_reference_uuid) elsif file.file_ref.is_a?(Xcodeproj::Project::Object::PBXFileReference) # products of sibling project targets are added as PBXFileReferences targets = find_with_product_path(file.file_ref.path) if targets.length > 1 raise Informative, "Found more than one target with product #{File.basename(file.file_ref.path)} in:\n#{targets.map(&:project)}" end targets.first end end |
#find_for_product_name(product_name) ⇒ Object
55 56 57 58 |
# File 'lib/build_graph/native_target_finder.rb', line 55 def find_for_product_name(product_name) all_targets.select {|native_target| native_target.name == product_name || native_target.product_reference.display_name == product_name} .first end |
#set_platform_name_filter(platform_name) ⇒ Object
19 20 21 |
# File 'lib/build_graph/native_target_finder.rb', line 19 def set_platform_name_filter(platform_name) @platform_name = platform_name end |