class Versioneer::Repo
Attributes
bump_segment[R]
environment[W]
prereleases[RW]
release_pattern[R]
starting_release[RW]
Public Class Methods
bump(version, bump_segment, prerelease_suffix=nil, bump_count=1)
click to toggle source
# File lib/versioneer/repo.rb, line 82 def self.bump(version, bump_segment, prerelease_suffix=nil, bump_count=1) length = segment_to_i(bump_segment) + 1 unless bump_segment.nil? if version.prerelease? or bump_segment.nil? next_version = (version.release.segments + [prerelease_suffix]).compact.join('.') else next_version = version bump_count.times do segments = next_version.release.segments.slice(0, length) while segments.size < length + 1 # Version.bump strips last segment segments << 0 end next_version = Gem::Version.new(segments.join('.')).bump end next_version = [next_version.to_s, prerelease_suffix].compact.join('.') end next_version end
new(file_within_repo, options=nil)
click to toggle source
# File lib/versioneer/repo.rb, line 3 def initialize(file_within_repo, options=nil) @file = file_within_repo @directory = File.dirname(@file) @environment = nil @bump_segment = :minor @prereleases = %w(alpha beta rc) @release_pattern = /\Av?([0-9\.]+\z)/ @starting_release = Gem::Version.new('0.0') if options.is_a? Hash options.each do |k, v| send("#{k}=", v) end end end
segment_to_i(segment)
click to toggle source
# File lib/versioneer/repo.rb, line 102 def self.segment_to_i(segment) [:major, :minor, :patch].index(segment) end
Public Instance Methods
bump_segment=(v)
click to toggle source
# File lib/versioneer/repo.rb, line 25 def bump_segment=(v) @bump_segment = v.to_sym end
commits_since_release()
click to toggle source
# File lib/versioneer/repo.rb, line 74 def commits_since_release 0 end
environment()
click to toggle source
# File lib/versioneer/repo.rb, line 29 def environment @environment || ENV['VERSIONEER_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['ENV'] || 'development' end
filesystem_dirty?()
click to toggle source
# File lib/versioneer/repo.rb, line 78 def filesystem_dirty? true end
release()
click to toggle source
# File lib/versioneer/repo.rb, line 63 def release starting_release end
release_pattern=(v)
click to toggle source
# File lib/versioneer/repo.rb, line 69 def release_pattern=(v) v = Regexp.new(v) if v.is_a? String @release_pattern = v end
to_s()
click to toggle source
# File lib/versioneer/repo.rb, line 35 def to_s version.to_s end
version()
click to toggle source
# File lib/versioneer/repo.rb, line 39 def version prerelease = nil c = commits_since_release if environment == 'production' if bump_segment == :minor and prereleases[2].nil? and c > 0 # Use commits as addition to patch level, instead of release candidate. return self.class.bump(release.release, :patch, nil, c) else prerelease = prereleases[2].to_s + c.to_s if c > 0 end elsif filesystem_dirty? prerelease = prereleases[0].to_s + (c+1).to_s elsif c > 0 prerelease = prereleases[1].to_s + c.to_s end if prerelease self.class.bump(release, bump_segment, prerelease) else release end end