Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 31 additions & 30 deletions scripts/add_framework_script.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,22 @@
opt.on('--file_ext FILE_EXT') { |o| options[:file_ext] = o}
end.parse!
sdk = options[:sdk]
target = options[:target]
target_name = options[:target]
framework_path = options[:framework_path]
source_tree = options[:source_tree]
file_ext = options[:file_ext]
project_path = "#{sdk}Example.xcodeproj"
project = Xcodeproj::Project.open(project_path)

# Find the target.
target = project.targets.find { |t| t.name == target_name }

# Check if the target exists.
unless target
STDERR.puts "Error: Target '#{target_name}' not found in project '#{project_path}'."
exit 1
end

project_framework_group = project.frameworks_group

def add_ref(group, path, source_tree, phase_list)
Expand All @@ -56,40 +66,31 @@ def add_ref(group, path, source_tree, phase_list)

if File.directory?(framework_path)
if framework_path.end_with?("bundle")
project.targets.each do |project_target|
next unless project_target.name == target
puts "The following bundle is added to #{project_target}"
add_ref(project.main_group,
framework_path,
source_tree,
[project_target.resources_build_phase])
end
puts "The following bundle is added to #{target.name}"
add_ref(project.main_group,
framework_path,
source_tree,
[target.resources_build_phase])
else
framework_group = Dir.glob(File.join(framework_path, "*.{#{file_ext}}"))

project.targets.each do |project_target|
next unless project_target.name == target
framework_set = project_target.frameworks_build_phase.files.to_set
puts "The following frameworks are added to #{project_target}"
embed_frameworks_phase = project_target.new_copy_files_build_phase("Embed Frameworks")
embed_frameworks_phase.dst_subfolder_spec = "10" # `Frameworks` directory
framework_group.each do |framework|
next if framework_set.size == framework_set.add(framework).size
add_ref(project_framework_group,
framework,
source_tree,
[project_target.frameworks_build_phase, embed_frameworks_phase])
end
framework_set = target.frameworks_build_phase.files.to_set
puts "The following frameworks are added to #{target.name}"
embed_frameworks_phase = target.new_copy_files_build_phase("Embed Frameworks")
embed_frameworks_phase.dst_subfolder_spec = "10" # `Frameworks` directory
framework_group.each do |framework|
next if framework_set.size == framework_set.add(framework).size
add_ref(project_framework_group,
framework,
source_tree,
[target.frameworks_build_phase, embed_frameworks_phase])
end
end
else
project.targets.each do |project_target|
next unless project_target.name == target
puts "The following file is added to #{project_target}"
add_ref(project_framework_group,
framework_path,
source_tree,
[project_target.frameworks_build_phase])
end
puts "The following file is added to #{target.name}"
add_ref(project_framework_group,
framework_path,
source_tree,
[target.frameworks_build_phase])
end
project.save()
Loading