class VersionManager::ReleaseManager

Attributes

options[R]
vcs[R]
version_storage[R]

Public Class Methods

new(vcs, version_storage, options) click to toggle source
# File lib/version-manager/release_manager.rb, line 16
def initialize(vcs, version_storage, options)
  @vcs = vcs
  @version_storage = version_storage
  @options = options
end

Public Instance Methods

major!(version) click to toggle source
# File lib/version-manager/release_manager.rb, line 27
def major!(version)
  default_strategy(version.bump_major)
end
minor!(version) click to toggle source
# File lib/version-manager/release_manager.rb, line 31
def minor!(version)
  default_strategy(version.bump_minor)
end
patch!(version) click to toggle source
# File lib/version-manager/release_manager.rb, line 35
def patch!(version)
  version = version.bump_patch
  vcs.commit(version_storage.store(version), default_commit_message(version))
  vcs.add_tag(version.to_s, default_commit_message(version))
  vcs.push_tag(version.to_s)
  vcs.push
end
validate!(release_type) click to toggle source
# File lib/version-manager/release_manager.rb, line 22
def validate!(release_type)
  raise BranchIsNotUpToDateError unless vcs.master_state_actual?
  raise ForbiddenBranchError unless appropriate_branch_for?(release_type)
end

Private Instance Methods

appropriate_branch_for?(action) click to toggle source
# File lib/version-manager/release_manager.rb, line 47
def appropriate_branch_for?(action)
  authorized_mask = options[:authorized_branches][action.to_sym]
  !authorized_mask || !vcs.current_branch.match(authorized_mask).nil?
end
default_commit_message(version) click to toggle source
# File lib/version-manager/release_manager.rb, line 60
def default_commit_message(version)
  message = options[:vcs][:default_commit_message]
  message.respond_to?(:call) ? message.call(version) : message.to_s
end
default_strategy(version) click to toggle source
# File lib/version-manager/release_manager.rb, line 52
def default_strategy(version)
  vcs.create_branch!(version)
  vcs.commit(version_storage.store(version), default_commit_message(version))
  vcs.add_tag(version.to_s, default_commit_message(version))
  vcs.push_tag(version.to_s)
  vcs.push
end