Skip to content

Instantly share code, notes, and snippets.

@csknns
Last active October 18, 2022 12:18
Show Gist options
  • Save csknns/c19793e8dfa059c494932d2ed1c7e8af to your computer and use it in GitHub Desktop.
Save csknns/c19793e8dfa059c494932d2ed1c7e8af to your computer and use it in GitHub Desktop.
Script to sort the files in the 'Compile Sources', 'Copy Bundle Resources' and 'Copy files' sections under Build Phase in Xcode
#!/usr/bin/env ruby
require 'xcodeproj'
require 'set'
project_file, target_name = ARGV
# open the project
project = Xcodeproj::Project.open(project_file)
# find the target
targets_to_sort = project.native_targets.select { |x| x.name == target_name || target_name.nil? }
phases_to_sort = [Xcodeproj::Project::Object::PBXSourcesBuildPhase, Xcodeproj::Project::Object::PBXCopyFilesBuildPhase, Xcodeproj::Project::Object::PBXResourcesBuildPhase]
targets_to_sort.each do |target|
puts "sorting files for target #{target.name}"
phases_to_sort.each do |phase_to_sort|
target.build_phases.select { |x| x.class == phase_to_sort }.each do |phase|
phase.files.sort! { |l, r| l.display_name <=> r.display_name }
end
end
end
puts 'saving project'
project.save
@jakemumu
Copy link

noice

@artemsmikh
Copy link

really noice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment