diff --git a/scripts/add_framework_script.rb b/scripts/add_framework_script.rb index 4fc735093..5f5e36b36 100755 --- a/scripts/add_framework_script.rb +++ b/scripts/add_framework_script.rb @@ -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) @@ -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()