class Autoversion::Versioner

Public Class Methods

new(versionfileContents, pwd=nil) click to toggle source
# File lib/autoversion/versioner.rb, line 7
def initialize versionfileContents, pwd=nil
  # Eval the Versionfile within the DSL
  @read_blk, @write_blk, @listeners, @config = Autoversion::DSL.evaluate versionfileContents
  
  raise UnableToReadVersion unless @read_blk

  # Fetch current version
  @current = read_version if @read_blk

  @gitter = ::Autoversion::Gitter.new(pwd || Dir.pwd, @config[:git])
end

Public Instance Methods

current_version() click to toggle source
# File lib/autoversion/versioner.rb, line 19
def current_version
  @current
end
increment!(type, simulate=false) click to toggle source
# File lib/autoversion/versioner.rb, line 27
def increment! type, simulate=false
  @gitter.ensure_cleanliness!

  nextVersion = @current.increment(type)

  process_before type, @current, nextVersion
  unless simulate
    @gitter.ensure_valid_branch! type

    write_version @current, nextVersion 
    @current = nextVersion
    @gitter.commit! type, @current.to_s
  end

  process_after type, @current
end
next_version(type) click to toggle source
# File lib/autoversion/versioner.rb, line 23
def next_version type
  @current.increment(type)
end

Private Instance Methods

notify_listeners(type, event, *args) click to toggle source
# File lib/autoversion/versioner.rb, line 64
def notify_listeners type, event, *args
  @listeners.select{|l| l[:type] == type && l[:event] == event }.each do |listener|
    listener[:blk].call *args
  end
end
process_after(event, currentVersion) click to toggle source
# File lib/autoversion/versioner.rb, line 59
def process_after event, currentVersion
  notify_listeners :after, event, currentVersion
  notify_listeners :after, :version, currentVersion
end
process_before(event, currentVersion, nextVersion) click to toggle source
# File lib/autoversion/versioner.rb, line 54
def process_before event, currentVersion, nextVersion
  notify_listeners :before, event, currentVersion, nextVersion
  notify_listeners :before, :version, currentVersion, nextVersion
end
read_version() click to toggle source
# File lib/autoversion/versioner.rb, line 46
def read_version
  Autoversion::SemVer.new @read_blk.call
end
write_version(currentVersion, nextVersion) click to toggle source
# File lib/autoversion/versioner.rb, line 50
def write_version currentVersion, nextVersion
  @write_blk.call currentVersion, nextVersion
end