cocoapods 0.39.0.beta.1 → 0.39.0.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- metadata +35 -63
- data/lib/cocoapods/command/cache/clean.rb +0 -90
- data/lib/cocoapods/command/cache/list.rb +0 -69
- data/lib/cocoapods/command/repo/add.rb +0 -53
- data/lib/cocoapods/command/repo/lint.rb +0 -77
- data/lib/cocoapods/command/repo/list.rb +0 -93
- data/lib/cocoapods/command/repo/push.rb +0 -223
- data/lib/cocoapods/command/repo/remove.rb +0 -36
- data/lib/cocoapods/command/repo/update.rb +0 -27
- data/lib/cocoapods/command/spec/cat.rb +0 -51
- data/lib/cocoapods/command/spec/create.rb +0 -279
- data/lib/cocoapods/command/spec/edit.rb +0 -94
- data/lib/cocoapods/command/spec/lint.rb +0 -119
- data/lib/cocoapods/command/spec/which.rb +0 -43
- data/lib/cocoapods/generator/acknowledgements/markdown.rb +0 -38
- data/lib/cocoapods/generator/acknowledgements/plist.rb +0 -80
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +0 -260
- data/lib/cocoapods/generator/xcconfig/pod_xcconfig.rb +0 -83
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +0 -213
- data/lib/cocoapods/installer/analyzer/analysis_result.rb +0 -46
- data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +0 -79
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +0 -262
- data/lib/cocoapods/installer/analyzer/specs_state.rb +0 -76
- data/lib/cocoapods/installer/analyzer/target_inspection_result.rb +0 -41
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +0 -203
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +0 -186
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +0 -297
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +0 -318
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +0 -173
@@ -1,76 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
class Analyzer
|
4
|
-
# This class represents the state of a collection of Pods.
|
5
|
-
#
|
6
|
-
# @note The names of the pods stored by this class are always the **root**
|
7
|
-
# name of the specification.
|
8
|
-
#
|
9
|
-
# @note The motivation for this class is to ensure that the names of the
|
10
|
-
# subspecs are added instead of the name of the Pods.
|
11
|
-
#
|
12
|
-
class SpecsState
|
13
|
-
# Initialize a new instance
|
14
|
-
#
|
15
|
-
# @param [Hash{Symbol=>String}] pods_by_state
|
16
|
-
# The name of the pods grouped by their state
|
17
|
-
# (`:added`, `:removed`, `:changed` or `:unchanged`).
|
18
|
-
#
|
19
|
-
def initialize(pods_by_state = nil)
|
20
|
-
@added = []
|
21
|
-
@deleted = []
|
22
|
-
@changed = []
|
23
|
-
@unchanged = []
|
24
|
-
|
25
|
-
if pods_by_state
|
26
|
-
@added = pods_by_state[:added] || []
|
27
|
-
@deleted = pods_by_state[:removed] || []
|
28
|
-
@changed = pods_by_state[:changed] || []
|
29
|
-
@unchanged = pods_by_state[:unchanged] || []
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# @return [Array<String>] the names of the pods that were added.
|
34
|
-
#
|
35
|
-
attr_accessor :added
|
36
|
-
|
37
|
-
# @return [Array<String>] the names of the pods that were changed.
|
38
|
-
#
|
39
|
-
attr_accessor :changed
|
40
|
-
|
41
|
-
# @return [Array<String>] the names of the pods that were deleted.
|
42
|
-
#
|
43
|
-
attr_accessor :deleted
|
44
|
-
|
45
|
-
# @return [Array<String>] the names of the pods that were unchanged.
|
46
|
-
#
|
47
|
-
attr_accessor :unchanged
|
48
|
-
|
49
|
-
# Displays the state of each pod.
|
50
|
-
#
|
51
|
-
# @return [void]
|
52
|
-
#
|
53
|
-
def print
|
54
|
-
added .sort.each { |pod| UI.message('A'.green + " #{pod}", '', 2) }
|
55
|
-
deleted .sort.each { |pod| UI.message('R'.red + " #{pod}", '', 2) }
|
56
|
-
changed .sort.each { |pod| UI.message('M'.yellow + " #{pod}", '', 2) }
|
57
|
-
unchanged.sort.each { |pod| UI.message('-' + " #{pod}", '', 2) }
|
58
|
-
end
|
59
|
-
|
60
|
-
# Adds the name of a Pod to the give state.
|
61
|
-
#
|
62
|
-
# @param [String] name
|
63
|
-
# the name of the Pod.
|
64
|
-
#
|
65
|
-
# @param [Symbol] state
|
66
|
-
# the state of the Pod.
|
67
|
-
#
|
68
|
-
# @return [void]
|
69
|
-
#
|
70
|
-
def add_name(name, state)
|
71
|
-
send(state) << name
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
class Analyzer
|
4
|
-
class TargetInspectionResult
|
5
|
-
# @return [TargetDefinition] the target definition, whose project was
|
6
|
-
# inspected
|
7
|
-
#
|
8
|
-
attr_accessor :target_definition
|
9
|
-
|
10
|
-
# @return [Pathname] the path of the user project that the
|
11
|
-
# #target_definition should integrate
|
12
|
-
#
|
13
|
-
attr_accessor :project_path
|
14
|
-
|
15
|
-
# @return [Array<String>] the uuid of the user's targets
|
16
|
-
#
|
17
|
-
attr_accessor :project_target_uuids
|
18
|
-
|
19
|
-
# @return [Hash{String=>Symbol}] A hash representing the user build
|
20
|
-
# configurations where each key corresponds to the name of a
|
21
|
-
# configuration and its value to its type (`:debug` or
|
22
|
-
# `:release`).
|
23
|
-
#
|
24
|
-
attr_accessor :build_configurations
|
25
|
-
|
26
|
-
# @return [Platform] the platform of the user targets
|
27
|
-
#
|
28
|
-
attr_accessor :platform
|
29
|
-
|
30
|
-
# @return [Array<String>] the architectures used by user's targets
|
31
|
-
#
|
32
|
-
attr_accessor :archs
|
33
|
-
|
34
|
-
# @return [Bool] whether frameworks are recommended for the integration
|
35
|
-
# due to the presence of Swift source in the user's targets
|
36
|
-
#
|
37
|
-
attr_accessor :recommends_frameworks
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,203 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
class Analyzer
|
4
|
-
class TargetInspector
|
5
|
-
# @return [TargetDefinition] the target definition to inspect
|
6
|
-
#
|
7
|
-
attr_accessor :target_definition
|
8
|
-
|
9
|
-
# @return [Pathname] the root of the CocoaPods installation where the
|
10
|
-
# Podfile is located
|
11
|
-
attr_accessor :installation_root
|
12
|
-
|
13
|
-
# Initialize a new instance
|
14
|
-
#
|
15
|
-
# @param [TargetDefinition] target_definition
|
16
|
-
# @see #target_definition
|
17
|
-
#
|
18
|
-
# @param [Pathname] installation_root
|
19
|
-
# @see #installation_root
|
20
|
-
#
|
21
|
-
def initialize(target_definition, installation_root)
|
22
|
-
@target_definition = target_definition
|
23
|
-
@installation_root = installation_root
|
24
|
-
end
|
25
|
-
|
26
|
-
# Inspect the #target_definition
|
27
|
-
#
|
28
|
-
# @return [TargetInspectionResult]
|
29
|
-
#
|
30
|
-
def compute_results
|
31
|
-
project_path = compute_project_path
|
32
|
-
user_project = Xcodeproj::Project.open(project_path)
|
33
|
-
targets = compute_targets(user_project)
|
34
|
-
|
35
|
-
result = TargetInspectionResult.new
|
36
|
-
result.target_definition = target_definition
|
37
|
-
result.project_path = project_path
|
38
|
-
result.project_target_uuids = targets.map(&:uuid)
|
39
|
-
result.build_configurations = compute_build_configurations(targets)
|
40
|
-
result.platform = compute_platform(targets)
|
41
|
-
result.archs = compute_archs(targets)
|
42
|
-
result
|
43
|
-
end
|
44
|
-
|
45
|
-
#-----------------------------------------------------------------------#
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
# Returns the path of the user project that the #target_definition
|
50
|
-
# should integrate.
|
51
|
-
#
|
52
|
-
# @raise If the project is implicit and there are multiple projects.
|
53
|
-
#
|
54
|
-
# @raise If the path doesn't exits.
|
55
|
-
#
|
56
|
-
# @return [Pathname] the path of the user project.
|
57
|
-
#
|
58
|
-
def compute_project_path
|
59
|
-
if target_definition.user_project_path
|
60
|
-
path = installation_root + target_definition.user_project_path
|
61
|
-
path = "#{path}.xcodeproj" unless File.extname(path) == '.xcodeproj'
|
62
|
-
path = Pathname.new(path)
|
63
|
-
unless path.exist?
|
64
|
-
raise Informative, 'Unable to find the Xcode project ' \
|
65
|
-
"`#{path}` for the target `#{target_definition.label}`."
|
66
|
-
end
|
67
|
-
else
|
68
|
-
xcodeprojs = installation_root.children.select { |e| e.fnmatch('*.xcodeproj') }
|
69
|
-
if xcodeprojs.size == 1
|
70
|
-
path = xcodeprojs.first
|
71
|
-
else
|
72
|
-
raise Informative, 'Could not automatically select an Xcode project. ' \
|
73
|
-
"Specify one in your Podfile like so:\n\n" \
|
74
|
-
" xcodeproj 'path/to/Project.xcodeproj'\n"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
path
|
78
|
-
end
|
79
|
-
|
80
|
-
# Returns a list of the targets from the project of #target_definition
|
81
|
-
# that needs to be integrated.
|
82
|
-
#
|
83
|
-
# @note The method first looks if there is a target specified with
|
84
|
-
# the `link_with` option of the {TargetDefinition}. Otherwise
|
85
|
-
# it looks for the target that has the same name of the target
|
86
|
-
# definition. Finally if no target was found the first
|
87
|
-
# encountered target is returned (it is assumed to be the one
|
88
|
-
# to integrate in simple projects).
|
89
|
-
#
|
90
|
-
# @param [Xcodeproj::Project] user_project
|
91
|
-
# the user project
|
92
|
-
#
|
93
|
-
# @return [Array<PBXNativeTarget>]
|
94
|
-
#
|
95
|
-
def compute_targets(user_project)
|
96
|
-
native_targets = user_project.native_targets
|
97
|
-
if link_with = target_definition.link_with
|
98
|
-
targets = native_targets.select { |t| link_with.include?(t.name) }
|
99
|
-
raise Informative, "Unable to find the targets named #{link_with.map { |x| "`#{x}`" }.to_sentence}" \
|
100
|
-
"to link with target definition `#{target_definition.name}`" if targets.empty?
|
101
|
-
elsif target_definition.link_with_first_target?
|
102
|
-
targets = [native_targets.first].compact
|
103
|
-
raise Informative, 'Unable to find a target' if targets.empty?
|
104
|
-
else
|
105
|
-
target = native_targets.find { |t| t.name == target_definition.name.to_s }
|
106
|
-
targets = [target].compact
|
107
|
-
raise Informative, "Unable to find a target named `#{target_definition.name}`" if targets.empty?
|
108
|
-
end
|
109
|
-
targets
|
110
|
-
end
|
111
|
-
|
112
|
-
# @param [Array<PBXNativeTarget] the user's targets of the project of
|
113
|
-
# #target_definition which needs to be integrated
|
114
|
-
#
|
115
|
-
# @return [Hash{String=>Symbol}] A hash representing the user build
|
116
|
-
# configurations where each key corresponds to the name of a
|
117
|
-
# configuration and its value to its type (`:debug` or `:release`).
|
118
|
-
#
|
119
|
-
def compute_build_configurations(user_targets)
|
120
|
-
if user_targets
|
121
|
-
user_targets.flat_map { |t| t.build_configurations.map(&:name) }.each_with_object({}) do |name, hash|
|
122
|
-
hash[name] = name == 'Debug' ? :debug : :release
|
123
|
-
end.merge(target_definition.build_configurations || {})
|
124
|
-
else
|
125
|
-
target_definition.build_configurations || {}
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
# @param [Array<PBXNativeTarget] the user's targets of the project of
|
130
|
-
# #target_definition which needs to be integrated
|
131
|
-
#
|
132
|
-
# @return [Platform] The platform of the user's targets
|
133
|
-
#
|
134
|
-
# @note This resolves to the lowest deployment target across the user
|
135
|
-
# targets.
|
136
|
-
#
|
137
|
-
# @todo Is assigning the platform to the target definition the best way
|
138
|
-
# to go?
|
139
|
-
#
|
140
|
-
def compute_platform(user_targets)
|
141
|
-
return target_definition.platform if target_definition.platform
|
142
|
-
name = nil
|
143
|
-
deployment_target = nil
|
144
|
-
|
145
|
-
user_targets.each do |target|
|
146
|
-
name ||= target.platform_name
|
147
|
-
raise Informative, 'Targets with different platforms' unless name == target.platform_name
|
148
|
-
if !deployment_target || deployment_target > Version.new(target.deployment_target)
|
149
|
-
deployment_target = Version.new(target.deployment_target)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
target_definition.set_platform(name, deployment_target)
|
154
|
-
Platform.new(name, deployment_target)
|
155
|
-
end
|
156
|
-
|
157
|
-
# Computes the architectures relevant for the user's targets.
|
158
|
-
#
|
159
|
-
# @param [Array<PBXNativeTarget] the user's targets of the project of
|
160
|
-
# #target_definition which needs to be integrated
|
161
|
-
#
|
162
|
-
# @return [Array<String>]
|
163
|
-
#
|
164
|
-
def compute_archs(user_targets)
|
165
|
-
user_targets.flat_map do |target|
|
166
|
-
Array(target.common_resolved_build_setting('ARCHS'))
|
167
|
-
end.compact.uniq.sort
|
168
|
-
end
|
169
|
-
|
170
|
-
# Checks if any of the targets for the {TargetDefinition} computed before
|
171
|
-
# by #compute_user_project_targets is recommended to be build as a framework
|
172
|
-
# due the presence of Swift source code in any of the source build phases.
|
173
|
-
#
|
174
|
-
# @param [TargetDefinition] target_definition
|
175
|
-
# the target definition
|
176
|
-
#
|
177
|
-
# @param [Array<PBXNativeTarget>] native_targets
|
178
|
-
# the targets which are checked for presence of Swift source code
|
179
|
-
#
|
180
|
-
# @return [Boolean] Whether the user project targets to integrate into
|
181
|
-
# uses Swift
|
182
|
-
#
|
183
|
-
def compute_recommends_frameworks(target_definition, native_targets)
|
184
|
-
file_predicate = nil
|
185
|
-
file_predicate = proc do |file_ref|
|
186
|
-
if file_ref.respond_to?(:last_known_file_type)
|
187
|
-
file_ref.last_known_file_type == 'sourcecode.swift'
|
188
|
-
elsif file_ref.respond_to?(:files)
|
189
|
-
file_ref.files.any?(&file_predicate)
|
190
|
-
else
|
191
|
-
false
|
192
|
-
end
|
193
|
-
end
|
194
|
-
target_definition.platform.supports_dynamic_frameworks? || native_targets.any? do |target|
|
195
|
-
target.source_build_phase.files.any? do |build_file|
|
196
|
-
file_predicate.call(build_file.file_ref)
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
@@ -1,186 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
# Creates the targets which aggregate the Pods libraries in the Pods
|
4
|
-
# project and the relative support files.
|
5
|
-
#
|
6
|
-
class AggregateTargetInstaller < TargetInstaller
|
7
|
-
# Creates the target in the Pods project and the relative support files.
|
8
|
-
#
|
9
|
-
# @return [void]
|
10
|
-
#
|
11
|
-
def install!
|
12
|
-
UI.message "- Installing target `#{target.name}` #{target.platform}" do
|
13
|
-
add_target
|
14
|
-
create_support_files_dir
|
15
|
-
create_support_files_group
|
16
|
-
create_xcconfig_file
|
17
|
-
if target.requires_frameworks?
|
18
|
-
create_info_plist_file
|
19
|
-
create_module_map
|
20
|
-
create_umbrella_header
|
21
|
-
end
|
22
|
-
create_embed_frameworks_script
|
23
|
-
create_bridge_support_file
|
24
|
-
create_copy_resources_script
|
25
|
-
create_acknowledgements
|
26
|
-
create_dummy_source
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
#-----------------------------------------------------------------------#
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
# @return [TargetDefinition] the target definition of the library.
|
35
|
-
#
|
36
|
-
def target_definition
|
37
|
-
target.target_definition
|
38
|
-
end
|
39
|
-
|
40
|
-
# Ensure that vendored static frameworks and libraries are not linked
|
41
|
-
# twice to the aggregate target, which shares the xcconfig of the user
|
42
|
-
# target.
|
43
|
-
#
|
44
|
-
def custom_build_settings
|
45
|
-
settings = {
|
46
|
-
'OTHER_LDFLAGS' => '',
|
47
|
-
'OTHER_LIBTOOLFLAGS' => '',
|
48
|
-
'PODS_ROOT' => '$(SRCROOT)',
|
49
|
-
'SKIP_INSTALL' => 'YES',
|
50
|
-
}
|
51
|
-
super.merge(settings)
|
52
|
-
end
|
53
|
-
|
54
|
-
# Creates the group that holds the references to the support files
|
55
|
-
# generated by this installer.
|
56
|
-
#
|
57
|
-
# @return [void]
|
58
|
-
#
|
59
|
-
def create_support_files_group
|
60
|
-
parent = project.support_files_group
|
61
|
-
name = target.name
|
62
|
-
dir = target.support_files_dir
|
63
|
-
@support_files_group = parent.new_group(name, dir)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Generates the contents of the xcconfig file and saves it to disk.
|
67
|
-
#
|
68
|
-
# @return [void]
|
69
|
-
#
|
70
|
-
def create_xcconfig_file
|
71
|
-
native_target.build_configurations.each do |configuration|
|
72
|
-
path = target.xcconfig_path(configuration.name)
|
73
|
-
gen = Generator::XCConfig::AggregateXCConfig.new(target, configuration.name)
|
74
|
-
gen.save_as(path)
|
75
|
-
target.xcconfigs[configuration.name] = gen.xcconfig
|
76
|
-
xcconfig_file_ref = add_file_to_support_group(path)
|
77
|
-
configuration.base_configuration_reference = xcconfig_file_ref
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
# Generates the bridge support metadata if requested by the {Podfile}.
|
82
|
-
#
|
83
|
-
# @note The bridge support metadata is added to the resources of the
|
84
|
-
# target because it is needed for environments interpreted at
|
85
|
-
# runtime.
|
86
|
-
#
|
87
|
-
# @return [void]
|
88
|
-
#
|
89
|
-
def create_bridge_support_file
|
90
|
-
if target.podfile.generate_bridge_support?
|
91
|
-
path = target.bridge_support_path
|
92
|
-
headers = native_target.headers_build_phase.files.map { |bf| sandbox.root + bf.file_ref.path }
|
93
|
-
generator = Generator::BridgeSupport.new(headers)
|
94
|
-
generator.save_as(path)
|
95
|
-
add_file_to_support_group(path)
|
96
|
-
@bridge_support_file = path.relative_path_from(sandbox.root)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
# Uniqued Resources grouped by config
|
101
|
-
#
|
102
|
-
# @return [Hash{ Symbol => Array<Pathname> }]
|
103
|
-
#
|
104
|
-
def resources_by_config
|
105
|
-
library_targets = target.pod_targets.reject do |pod_target|
|
106
|
-
pod_target.should_build? && pod_target.requires_frameworks?
|
107
|
-
end
|
108
|
-
resources_by_config = {}
|
109
|
-
target.user_build_configurations.keys.each do |config|
|
110
|
-
file_accessors = library_targets.select { |t| t.include_in_build_config?(target_definition, config) }.flat_map(&:file_accessors)
|
111
|
-
resource_paths = file_accessors.flat_map { |accessor| accessor.resources.flat_map { |res| res.relative_path_from(project.path.dirname) } }
|
112
|
-
resource_bundles = file_accessors.flat_map { |accessor| accessor.resource_bundles.keys.map { |name| "${BUILT_PRODUCTS_DIR}/#{name.shellescape}.bundle" } }
|
113
|
-
resources_by_config[config] = (resource_paths + resource_bundles).uniq
|
114
|
-
resources_by_config[config] << bridge_support_file if bridge_support_file
|
115
|
-
end
|
116
|
-
resources_by_config
|
117
|
-
end
|
118
|
-
|
119
|
-
# Creates a script that copies the resources to the bundle of the client
|
120
|
-
# target.
|
121
|
-
#
|
122
|
-
# @note The bridge support file needs to be created before the prefix
|
123
|
-
# header, otherwise it will not be added to the resources script.
|
124
|
-
#
|
125
|
-
# @return [void]
|
126
|
-
#
|
127
|
-
def create_copy_resources_script
|
128
|
-
path = target.copy_resources_script_path
|
129
|
-
generator = Generator::CopyResourcesScript.new(resources_by_config, target.platform)
|
130
|
-
generator.save_as(path)
|
131
|
-
add_file_to_support_group(path)
|
132
|
-
end
|
133
|
-
|
134
|
-
# Creates a script that embeds the frameworks to the bundle of the client
|
135
|
-
# target.
|
136
|
-
#
|
137
|
-
# @note We can't use Xcode default copy bundle resource phase, because
|
138
|
-
# we need to ensure that we only copy the resources, which are
|
139
|
-
# relevant for the current build configuration.
|
140
|
-
#
|
141
|
-
# @return [void]
|
142
|
-
#
|
143
|
-
def create_embed_frameworks_script
|
144
|
-
path = target.embed_frameworks_script_path
|
145
|
-
frameworks_by_config = {}
|
146
|
-
target.user_build_configurations.keys.each do |config|
|
147
|
-
relevant_pod_targets = target.pod_targets.select do |pod_target|
|
148
|
-
pod_target.include_in_build_config?(target_definition, config)
|
149
|
-
end
|
150
|
-
frameworks_by_config[config] = relevant_pod_targets.flat_map do |pod_target|
|
151
|
-
frameworks = pod_target.file_accessors.flat_map(&:vendored_dynamic_artifacts).map { |fw| "${PODS_ROOT}/#{fw.relative_path_from(sandbox.root)}" }
|
152
|
-
frameworks << "#{target_definition.label}/#{pod_target.product_name}" if pod_target.should_build? && pod_target.requires_frameworks?
|
153
|
-
frameworks
|
154
|
-
end
|
155
|
-
end
|
156
|
-
generator = Generator::EmbedFrameworksScript.new(frameworks_by_config)
|
157
|
-
generator.save_as(path)
|
158
|
-
add_file_to_support_group(path)
|
159
|
-
end
|
160
|
-
|
161
|
-
# Generates the acknowledgement files (markdown and plist) for the target.
|
162
|
-
#
|
163
|
-
# @return [void]
|
164
|
-
#
|
165
|
-
def create_acknowledgements
|
166
|
-
basepath = target.acknowledgements_basepath
|
167
|
-
Generator::Acknowledgements.generators.each do |generator_class|
|
168
|
-
path = generator_class.path_from_basepath(basepath)
|
169
|
-
file_accessors = target.pod_targets.map(&:file_accessors).flatten
|
170
|
-
generator = generator_class.new(file_accessors)
|
171
|
-
generator.save_as(path)
|
172
|
-
add_file_to_support_group(path)
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# @return [Pathname] the path of the bridge support file relative to the
|
177
|
-
# sandbox.
|
178
|
-
#
|
179
|
-
# @return [Nil] if no bridge support file was generated.
|
180
|
-
#
|
181
|
-
attr_reader :bridge_support_file
|
182
|
-
|
183
|
-
#-----------------------------------------------------------------------#
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|