class VersionFile

Attributes

file_name[R]

Public Class Methods

new(file_name = "VERSION") click to toggle source
# File lib/mark_version/version_file.rb, line 4
def initialize(file_name = "VERSION")
  @file_name = "#{file_name}"
end

Public Instance Methods

current_major_version() click to toggle source
# File lib/mark_version/version_file.rb, line 106
def current_major_version
  version_as_array[0]
end
current_minor_version() click to toggle source
# File lib/mark_version/version_file.rb, line 102
def current_minor_version
  version_as_array[1]
end
current_patch_version() click to toggle source
# File lib/mark_version/version_file.rb, line 94
def current_patch_version
  if version.include?('RC')
    version_as_array[2].split('-')[0]
  else
    version_as_array[2]
  end
end
dev_version() click to toggle source
# File lib/mark_version/version_file.rb, line 32
def dev_version
  return "#{version}.#{Git.branch}+#{Git.ahead_of_release_by}" unless Git.on_release_branch?
  return "#{version}+#{Git.current_ahead_by}" if Git.current_ahead_of_version?

  version
end
file_exists?() click to toggle source
# File lib/mark_version/version_file.rb, line 18
def file_exists?
  File.file?(file_name)
end
increment_release_candidate() click to toggle source
# File lib/mark_version/version_file.rb, line 84
def increment_release_candidate
  fail 'Cannot increment the release candidate version on a non release candidate.' unless release_candidate?
  write("#{short_version}-RC#{next_release_candidate}")
end
init() click to toggle source
# File lib/mark_version/version_file.rb, line 8
def init
  fail 'Project already initialized.' if file_exists?
  @version_file = open(file_name, 'w')
  @version_file.rewind
  @version_file.puts('0.0.0')
  @version_file.rewind
  @version_file.close
  version
end
major() click to toggle source
# File lib/mark_version/version_file.rb, line 62
def major
  fail 'Cannot major increment a release candidate, it needs to be released first.' if release_candidate?
  version = version_as_array
  version[2] = '0'
  version[1] = '0'
  version[0] = (version[0].to_i + 1).to_s

  write(version.join('.'))
end
major_release_candidate() click to toggle source
# File lib/mark_version/version_file.rb, line 78
def major_release_candidate
  fail 'Cannot make a releae candidate out of a release candidate. To increment to the next release candidate, invoke "increment_release_candidate".' if release_candidate?
  major
  write("#{version}-RC1")
end
minor() click to toggle source
# File lib/mark_version/version_file.rb, line 53
def minor
  fail 'Cannot minor increment a release candidate, it needs to be released first.' if release_candidate?
  version = version_as_array
  version[2] = '0'
  version[1] = (version[1].to_i + 1).to_s

  write(version.join('.'))
end
minor_release_candidate() click to toggle source
# File lib/mark_version/version_file.rb, line 72
def minor_release_candidate
  fail 'Cannot make a releae candidate out of a release candidate. To increment to the next release candidate, invoke "increment_release_candidate".' if release_candidate?
  minor
  write("#{short_version}-RC1")
end
patch() click to toggle source
# File lib/mark_version/version_file.rb, line 45
def patch
  fail 'Cannot patch a release candidate, it needs to be released first.' if release_candidate?
  version = version_as_array
  version[2] = (version[2].to_i + 1).to_s

  write(version.join('.'))
end
release() click to toggle source
# File lib/mark_version/version_file.rb, line 89
def release
  fail 'Cannot release a non release candidate.' unless release_candidate?
  write(short_version)
end
release_candidate?() click to toggle source
# File lib/mark_version/version_file.rb, line 114
def release_candidate?
  version.include?('RC')
end
release_candidate_iteration() click to toggle source
# File lib/mark_version/version_file.rb, line 110
def release_candidate_iteration
  version.split('RC')[1].to_s
end
short_version() click to toggle source
# File lib/mark_version/version_file.rb, line 39
def short_version
  return version unless release_candidate?

  version.split('-')[0]
end
version() click to toggle source
# File lib/mark_version/version_file.rb, line 22
def version
  fail "Version file '#{file_name}' does not exist." unless file_exists?

  @version_file = open(file_name, 'r+')
  version = @version_file.readline.chomp
  @version_file.close

  version
end

Private Instance Methods

next_release_candidate() click to toggle source
# File lib/mark_version/version_file.rb, line 124
def next_release_candidate
  return 1 unless release_candidate?

  release_candidate_iteration.to_i + 1
end
version_as_array() click to toggle source
# File lib/mark_version/version_file.rb, line 120
def version_as_array
  version.split('.')
end
write(version) click to toggle source
# File lib/mark_version/version_file.rb, line 130
def write(version)
  fail "Version file '#{file_name}' does not exist." unless file_exists?
  @version_file = open(file_name, 'r+')
  @version_file.puts(version)
  @version_file.close
  version
end