Class: Pod::Swift::PackageDescription::Target
Instance Attribute Summary
#parent, #raw
Instance Method Summary
collapse
#[], #dup_with_attrs, from_file, from_s, #initialize, #inspect, #name, #pkg_name, #root
Instance Method Details
#binary? ⇒ Boolean
17
18
19
20
21
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 17
def binary?
return @binary unless @binary.nil?
@binary = type == "binary"
end
|
#binary_basename ⇒ Object
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 142
def binary_basename
return nil unless binary?
@binary_basename ||= begin
xcframework_dir ||= (root.artifacts_dir / name).glob("*.xcframework")[0]
xcframework_dir ||= root.src_dir / raw["path"] if raw.key?("path")
paths = xcframework_dir.glob("*/*.{a,framework}")
UI.warn "Cannot detect binary_basename for #{name}" if paths.empty?
paths[0].basename.to_s unless paths.empty?
end
end
|
#built_framework_path ⇒ Object
131
132
133
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 131
def built_framework_path
"${BUILT_PRODUCTS_DIR}/PackageFrameworks/#{framework_name}.framework"
end
|
#clang_modulemap_arg ⇒ Object
70
71
72
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 70
def clang_modulemap_arg
"-fmodule-map-file=\"#{clang_modulemap_path_expr}\"" unless clang_modulemap_path_expr.nil?
end
|
#clang_modulemap_path_expr ⇒ Object
64
65
66
67
68
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 64
def clang_modulemap_path_expr
return "#{public_headers_path_expr}/#{modulemap_path.basename}" unless modulemap_path.nil?
"${GENERATED_MODULEMAP_DIR}/#{name}.modulemap" unless binary?
end
|
#dynamic? ⇒ Boolean
23
24
25
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 23
def dynamic?
@dynamic
end
|
#framework_name ⇒ Object
27
28
29
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 27
def framework_name
@product_name || name
end
|
45
46
47
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 45
def
"\"#{public_headers_path_expr}\"" unless .nil?
end
|
55
56
57
58
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 55
def
path = sources_path / "include"
path unless path.glob("**/*.h*").empty?
end
|
#implicit_resources ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 80
def implicit_resources
target_sources_path = raw["path"] || "Sources/#{name}"
target_sources_path = root.src_dir / target_sources_path
patterns = [
"*.xcassets",
"*.xib",
"*.storyboard",
"*.xcdatamodeld",
"*.lproj",
]
return [] if patterns.all? { |p| target_sources_path.glob(p).empty? }
[Resources.new({}, parent: self)]
end
|
#linker_flags ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 98
def linker_flags
return ["-framework \"#{framework_name}\""] if dynamic?
return ["-l\"#{name}.o\""] unless binary?
case binary_basename
when /(\S+)\.framework/ then ["-framework \"#{$1}\""]
when /lib(\S+)\.(a|dylib)/ then ["-l\"#{$1}\""]
when /(\S+\.(a|dylib))/ then ["\"${PODS_CONFIGURATION_BUILD_DIR}/#{$1}\""]
else []
end
end
|
#macro? ⇒ Boolean
13
14
15
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 13
def macro?
type == "macro"
end
|
#modulemap_path ⇒ Object
60
61
62
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 60
def modulemap_path
@modulemap_path ||= &.glob("*.modulemap")&.first
end
|
49
50
51
52
53
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 49
def
res = sources_path / raw["publicHeadersPath"] if raw.key?("publicHeadersPath")
res = if res.nil?
res
end
|
38
39
40
41
42
43
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 38
def
||= .to_s.sub(
root.checkouts_dir.to_s,
"${SOURCE_PACKAGES_CHECKOUTS_DIR}"
)
end
|
#resolve_dependencies(pkg_desc_cache, platform: nil) ⇒ Object
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 110
def resolve_dependencies(pkg_desc_cache, platform: nil)
raw.fetch("dependencies", []).flat_map do |hash|
type = ["byName", "target", "product"].find { |k| hash.key?(k) }
if type.nil?
raise Informative, "Unexpected dependency type. Must be either `byName`, `target`, or `product`."
end
next [] unless match_platform?(hash[type][-1], platform)
name = hash[type][0]
pkg_name = hash.key?("product") ? hash["product"][1] : self.pkg_name
pkg_desc = pkg_desc_cache[pkg_name]
find_by_target = -> { pkg_desc.targets.select { |t| t.name == name } }
find_by_product = -> { pkg_desc.targets_of_product(name) }
next find_by_target.call if hash.key?("target")
next find_by_product.call if hash.key?("product")
next find_by_target.call || find_by_product.call
end
end
|
#resources ⇒ Object
74
75
76
77
78
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 74
def resources
res = raw.fetch("resources", []).flat_map { |h| Resources.new(h, parent: self) }
res = implicit_resources if res.empty?
res
end
|
#sources_path ⇒ Object
31
32
33
34
35
36
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 31
def sources_path
@sources_path ||= begin
path = raw["path"] || "Sources/#{name}"
root.src_dir / path
end
end
|
#type ⇒ Object
9
10
11
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 9
def type
raw["type"]
end
|
#use_default_xcode_linking? ⇒ Boolean
154
155
156
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 154
def use_default_xcode_linking?
root.use_default_xcode_linking?
end
|
#xcframework ⇒ Object
135
136
137
138
139
140
|
# File 'lib/cocoapods-spm/swift/package/target.rb', line 135
def xcframework
@xcframework ||= begin
path = (root.artifacts_dir / name).glob("*.xcframework")[0]
Xcode::XCFramework.new(name, path.realpath) unless path.nil?
end
end
|