LoginSignup
3
2

More than 5 years have passed since last update.

xcodeproj gemでxcschemeを弄ってみる

Last updated at Posted at 2016-01-27

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を書き換えてもプロジェクトを開き直さないと反映されないなど、少し残念ですが、使い方によっては作業の効率化が図れそうです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2