Updated Podfile postinstall script
Showing
... | ... | @@ -47,6 +47,15 @@ def application_pods |
end | ||
#-------Targets------- | ||
#Analytics | ||
target 'OneWeatherAnalytics' do | ||
project 'OneWeatherAnalytics/OneWeatherAnalytics.project' | ||
shared_pods | ||
analytics_pods | ||
end | ||
#Application | ||
target '1Weather' do | ||
shared_pods | ||
core_pods | ||
... | ... | @@ -92,81 +101,53 @@ target 'WDTWeatherSource' do |
shared_pods | ||
end | ||
#Analytics | ||
target 'OneWeatherAnalytics' do | ||
project 'OneWeatherAnalytics/OneWeatherAnalytics.project' | ||
shared_pods | ||
analytics_pods | ||
end | ||
target 'OneWeatherNotificationServiceExtension' do | ||
use_frameworks! | ||
pod 'MORichNotification' | ||
end | ||
post_install do |installer| | ||
auto_process_target(['1Weather'], 'OneWeatherAnalytics', installer) | ||
end | ||
def auto_process_target(app_target_names, embedded_target_name, installer) | ||
words = find_words_at_embedded_target('Pods-' + embedded_target_name, | ||
installer) | ||
handle_app_targets(app_target_names.map{ |str| 'Pods-' + str }, | ||
words, | ||
installer) | ||
end | ||
def find_line_with_start(str, start) | ||
str.each_line do |line| | ||
if line.start_with?(start) | ||
return line | ||
end | ||
end | ||
return nil | ||
end | ||
def remove_words(str, words) | ||
new_str = str | ||
words.each do |word| | ||
new_str = new_str.sub(word, '') | ||
end | ||
return new_str | ||
end | ||
def find_words_at_embedded_target(target_name, installer) | ||
target = installer.pods_project.targets.find { |target| target.name == target_name } | ||
target.build_configurations.each do |config| | ||
xcconfig_path = config.base_configuration_reference.real_path | ||
xcconfig = File.read(xcconfig_path) | ||
old_line = find_line_with_start(xcconfig, "OTHER_LDFLAGS") | ||
if old_line == nil | ||
next | ||
end | ||
words = old_line.split(' ').select{ |str| str.start_with?("-l") }.map{ |str| ' ' + str } | ||
return words | ||
end | ||
end | ||
def handle_app_targets(names, words, installer) | ||
installer.pods_project.targets.each do |target| | ||
if names.index(target.name) == nil | ||
next | ||
end | ||
puts "Updating #{target.name} OTHER_LDFLAGS" | ||
target.build_configurations.each do |config| | ||
xcconfig_path = config.base_configuration_reference.real_path | ||
xcconfig = File.read(xcconfig_path) | ||
old_line = find_line_with_start(xcconfig, "OTHER_LDFLAGS") | ||
if old_line == nil | ||
next | ||
applicationTargets = [ | ||
'Pods-OneWeatherAnalytics' | ||
] | ||
libraryTargets = [ | ||
'Pods-1Weather' | ||
] | ||
embedded_targets = installer.aggregate_targets.select { |aggregate_target| | ||
libraryTargets.include? aggregate_target.name | ||
} | ||
embedded_pod_targets = embedded_targets.flat_map { |embedded_target| embedded_target.pod_targets } | ||
host_targets = installer.aggregate_targets.select { |aggregate_target| | ||
applicationTargets.include? aggregate_target.name | ||
} | ||
# We only want to remove pods from Application targets, not libraries | ||
host_targets.each do |host_target| | ||
host_target.xcconfigs.each do |config_name, config_file| | ||
host_target.pod_targets.each do |pod_target| | ||
if embedded_pod_targets.include? pod_target | ||
pod_target.specs.each do |spec| | ||
if spec.attributes_hash['ios'] != nil | ||
frameworkPaths = spec.attributes_hash['ios']['vendored_frameworks'] | ||
else | ||
frameworkPaths = spec.attributes_hash['vendored_frameworks'] | ||
end | ||
if frameworkPaths != nil | ||
frameworkNames = Array(frameworkPaths).map(&:to_s).map do |filename| | ||
extension = File.extname filename | ||
File.basename filename, extension | ||
end | ||
frameworkNames.each do |name| | ||
puts "Removing #{name} from OTHER_LDFLAGS of target #{host_target.name}" | ||
config_file.frameworks.delete(name) | ||
end | ||
end | ||
end | ||
end | ||
end | ||
new_line = remove_words(old_line, words) | ||
new_xcconfig = xcconfig.sub(old_line, new_line) | ||
File.open(xcconfig_path, "w") { |file| file << new_xcconfig } | ||
xcconfig_path = host_target.xcconfig_path(config_name) | ||
config_file.save_as(xcconfig_path) | ||
end | ||
end | ||
end |
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment