class XcodeProject::XCBuildConfiguration

Attributes

build_settings[RW]
name[R]

Public Class Methods

new(root, uuid, data) click to toggle source
Calls superclass method XcodeProject::Node::new
# File lib/xcodeproject/xc_build_configuration.rb, line 33
def initialize(root, uuid, data)
  super(root, uuid, data)

  @name = data['name']
  @build_settings = data['buildSettings']
end

Public Instance Methods

change_version(value, type = :major) click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 52
def change_version(value, type = :major)
  case type
  when :major then write_property('CFBundleShortVersionString', value)
  when :minor then write_property('CFBundleVersion', value)
  else raise ArgumentError, 'Wrong argument type, expected :major or :minor.'
  end
end
increment_version(type = :major) click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 60
def increment_version(type = :major)
  cv = version(type)
  nv = cv.nil? ? '0' : cv.next

  change_version(nv, type)
end
version(type = :major) click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 40
def version(type = :major)
  major = read_property('CFBundleShortVersionString')
  minor = read_property('CFBundleVersion')

  case type
  when :major then major
  when :minor then minor
  when :both then major + '.' + minor
  else raise ArgumentError, 'Wrong argument type, expected :major, :minor or :both.'
  end
end

Private Instance Methods

plist_path() click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 69
def plist_path
  root.absolute_path(build_settings['INFOPLIST_FILE'])
end
read_property(key) click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 73
def read_property(key)
  file = File.new(plist_path)
  doc = REXML::Document.new(file)

  doc.elements.each('plist/dict/key') do |e|
    return e.next_element.text if e.text == key
  end
  nil
end
write_property(key, value) click to toggle source
# File lib/xcodeproject/xc_build_configuration.rb, line 83
def write_property(key, value)
  file = File.new(plist_path)
  doc = REXML::Document.new(file)

  doc.elements.each('plist/dict/key') do |e|
    e.next_element.text = value if e.text == key
  end

  formatter = REXML::Formatters::Default.new
  File.open(plist_path, 'w') do |data|
    formatter.write(doc, data)
  end
  nil
end