xcodeのProject -> Scheme -> Edit Scheme
から編集する設定xcschemeの設定は、
proj-name.xcodeproject/xcuserdata/developer_name/
以下に保存され、
各開発者固有に持つもので、当然git管理下にも置かないですが
不意に消してしまったときに手動でポチポチいじるのが非効率な気がしていました。
git管理下に置くだけならばshared schemeにすれば良さそうですが、
今回はスクリプトからいじる方法を調べてみました。
xcodeproj を使えば、スクリプトから弄れそうなので、試しにxcschemeの言語設定(Option -> Application Language
)をいじってみました。
# !/usr/bin/env ruby
require 'xcodeproj'
lang = ARGV[0]
if lang.nil?
puts "no language is specified"
exit 1
end
Dir.glob('**/*.xcodeproj').each do |path|
proj_name = File.basename(path, ".xcodeproj")
me = `whoami`.strip
scheme_path = path + '/xcuserdata/' + me + '.xcuserdatad/xcschemes/' + proj_name + '.xcscheme'
next if !File.exist? scheme_path
scheme = Xcodeproj::XCScheme.new(scheme_path)
la = scheme.launch_action
if !la.nil?
prev = la.xml_element.attribute("language") || "system"
if lang == "system"
la.xml_element.delete_attribute "language"
else
la.xml_element.add_attribute "language", lang
end
puts "change language from #{prev} to #{lang} of #{scheme_path}"
end
scheme.save!
end
最終的にREXML::Element#add_attribute
を直接叩いていたり、
スクリプトからxcschemeを書き換えてもプロジェクトを開き直さないと反映されないなど、少し残念ですが、使い方によっては作業の効率化が図れそうです。