xcodeproj というgemをつかうと、*.xcodeprojをRubyからいじれるようだ。たとえば以下のようにすると、プロジェクトのビルド前に任意のスクリプトを実行するフェーズをつくることができる。
現実のプロダクトでは、CocoaPodsなどで使っているよう。
#!/usr/bin/env ruby
require 'xcodeproj'
project = Xcodeproj::Project.open(*Dir.glob('*.xcodeproj'))
PHASE_NAME = "Do something wonderful"
project.targets.each do |target|
next if target.build_phases.any? do |phase|
phase.respond_to?(:name) && phase.name == PHASE_NAME
end
phase = project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
phase.name = PHASE_NAME
phase.shell_script = "echo do something with ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/your.file"
target.build_phases.unshift(phase)
end
project.save()