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