class Verto::TagCommand
Public Instance Methods
up()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 15 def up load_config_hooks! call_hooks(%i[before before_tag_up], with_attributes: { command_options: options }) validate_version_option_presence! latest_tag = tag_repository.latest(filter: load_filter) validate_latest_tag!(latest_tag) latest_version = SemanticVersion.new(latest_tag) new_version = up_version(latest_version, options) validate_new_version!(new_version, latest_version) call_hooks(:before_tag_creation, with_attributes: { new_version: new_version }) stderr.puts "Creating Tag #{version_prefix}#{new_version}..." tag_repository.create!("#{version_prefix}#{new_version}") stderr.puts "Tag #{version_prefix}#{new_version} Created!" call_hooks(:after_tag_up, with_attributes: { new_version: new_version }) call_hooks(:after) end
Private Instance Methods
default_identifier()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 125 def default_identifier Verto.config.pre_release.default_identifier end
load_config_hooks!()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 118 def load_config_hooks! if Verto.config.git.pull_before_tag_creation Verto.config.hooks.prepend Verto::DSL::BuiltInHooks::GitPullCurrentBranch end Verto.config.hooks << Verto::DSL::BuiltInHooks::GitPushCurrentBranch if Verto.config.git.push_after_tag_creation end
load_filter()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 110 def load_filter TagFilter.for(options[:filter]) || Regexp.new(options[:filter].to_s) end
pre_release_configured?()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 65 def pre_release_configured? options[:pre_release] != 'pre_release' end
up_version(version, options)
click to toggle source
# File lib/verto/commands/tag_command.rb, line 46 def up_version(version, options) up_options = options.select { |_, value| value == true }.keys.map(&:to_sym) & %i[major minor patch] up_option = up_options.min new_version = version.up(up_option) if options[:pre_release] identifier = pre_release_configured? ? options[:pre_release] : version.pre_release.name || default_identifier new_version = new_version.with_pre_release(identifier) if new_version.pre_release.name == version.pre_release.name && new_version == version new_version = new_version.up(:pre_release) end end new_version = new_version.release_version if options[:release] new_version end
validate_latest_tag!(latest_tag)
click to toggle source
# File lib/verto/commands/tag_command.rb, line 69 def validate_latest_tag!(latest_tag) return if latest_tag command_error!( <<~TEXT Project doesn't have a previous tag version, create a new tag with git. eg: `git tag #{version_prefix}0.1.0` TEXT ) end
validate_new_version!(new_version, latest_version)
click to toggle source
# File lib/verto/commands/tag_command.rb, line 80 def validate_new_version!(new_version, latest_version) return unless new_version < latest_version && Verto.config.version.validations.new_version_must_be_bigger command_error!( <<~TEXT New version(#{new_version}) can't be equal or lower than latest version(#{latest_version}) run up --pre-release with --patch, --minor or --major (eg: verto tag up --patch --pre-release=rc), add filters (eg: verto tag up --pre-release --filter=pre_release_only) or disable tag validation in Vertofile with config.version.validations.new_version_must_be_bigger = false TEXT ) end
validate_version_option_presence!()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 93 def validate_version_option_presence! return if options[:major] || options[:minor] || options[:patch] || options[:pre_release] || options[:release] command_error!( <<~TEXT You must specify the version number to be increased, use the some of the options(eg: --major, --minor, --patch, --pre_release=rc) or configure a Vertofile to specify a default option for current context, eg: context('qa') { before_command('tag_up') { command_options.add(pre_release: 'rc') } } TEXT ) end
version_prefix()
click to toggle source
# File lib/verto/commands/tag_command.rb, line 114 def version_prefix options[:version_prefix] || Verto.config.version.prefix end