Voici un script Ruby qui permet de trier tous les fichiers dans leurs groupes respectifs dans un Xcode 4 fichier de projet (probablement Xcode 3 aussi, mais je n'ai pas essayé).
Utilisation:
ruby sort.rb <infile> <outfile>
où <infile> est un non triés .pbxproj fichier et <output> sera la version triée. Ne pas faire le même fichier.
#!/usr/bin/env ruby
state = :primary
group = []
file_count = group_count = 0
File.open ARGV[0] do |infile|
File.open ARGV[1], 'w' do |outfile|
infile.each_line do |line|
case state
when :primary
# copy lines until and including "children = ("
outfile.write line
state = :group if line =~ /^\s*children\s*=\s*\x28\s*$/
when :group
if line =~ /^\s*[0-9A-F]+\s*\/\* (.*) \*\/,\s*$/
# add file to current group if "<guid> /* <filename> */,"
group << [$1,line]
file_count += 1
else
# otherwise, output sorted files,
# empty the group, and go back to primary state
group.sort.each do |fn,ln|
outfile.write ln
end
state = :primary
group = []
outfile.write line
group_count += 1
end
end
end
end
end
puts "Sorted #{file_count} files in #{group_count} groups"