class Timewizard::Versioner::Apple

Represents the Apple implementation of the versioner spec. @author Richard Harrah @since 0.2.3

Public Class Methods

new(path_to_file) click to toggle source

Public functions (inherited from parent)

Calls superclass method Timewizard::Versioner::Base::new
# File lib/timewizard/versioner/apple.rb, line 16
def initialize(path_to_file)
  super path_to_file
  @file_contents = CFPropertyList::List.new
end

Private Instance Methods

change_build_numbers() click to toggle source
# File lib/timewizard/versioner/apple.rb, line 75
def change_build_numbers
  if @file_contents.nil?
    read_file
  end
  if @new_build_number.nil?
    read_build_numbers
  end
  data = CFPropertyList.native_types(@file_contents.value)
  data['CFBundleVersion'] = @new_build_number.to_s

  @file_contents.value = CFPropertyList.guess(data)
end
change_version_numbers() click to toggle source
# File lib/timewizard/versioner/apple.rb, line 88
def change_version_numbers
  if @file_contents.nil?
    read_file
  end
  if @new_version_number.nil?
    read_build_numbers
  end
  data = CFPropertyList.native_types(@file_contents.value)
  data['CFBundleShortVersionString'] = @new_version_number.to_s

  @file_contents.value = CFPropertyList.guess(data)
end
find_build_and_version_numbers() click to toggle source
# File lib/timewizard/versioner/apple.rb, line 51
def find_build_and_version_numbers
  if @file_contents.nil?
    read_file
  end

  data = CFPropertyList.native_types(@file_contents.value)

  build_num = Timewizard::Utils::Wizardry.only_version(data['CFBundleVersion'])
  version_num = Timewizard::Utils::Wizardry.only_version(data['CFBundleShortVersionString'])

  parsed_build_num = Versionomy.parse(build_num, Versionomy::Format.get('rubygems'))
  parsed_version_num = Versionomy.parse(version_num, Versionomy::Format.get('rubygems'))

  @bumped_build_number = parsed_build_num.bump(parsed_build_num.parts.length - 1)
  @bumped_version_number = parsed_version_num.bump(parsed_version_num.parts.length - 1)

  obn = parsed_build_num.unparse
  ovn = parsed_version_num.unparse
  nbn = parsed_build_num.bump(parsed_build_num.parts.length - 1).unparse
  nvn = ovn

  [obn, ovn, nbn, nvn]
end
read_file() click to toggle source

Private functions (implementation specific)

# File lib/timewizard/versioner/apple.rb, line 26
def read_file
  if @file.nil?
    raise 'file is nil and cannot be read'
  end

  @file_contents = CFPropertyList::List.new

  if File.exist?(@file)
    @file_contents.load(@file)
  end

  @file_contents
end
write_file() click to toggle source
# File lib/timewizard/versioner/apple.rb, line 40
def write_file
  if @file.nil?
    raise 'file is nil and cannot be written'
  end
  if @file_contents.nil?
    raise 'file_contents is nil and cannot be written'
  end
  @file_contents.formatted = true
  @file_contents.save(@file)
end