lib/avm/git/issue/complete.rb in avm-git-0.3.0 vs lib/avm/git/issue/complete.rb in avm-git-0.3.1

- old
+ new

@@ -1,25 +1,27 @@ # frozen_string_literal: true require 'avm/tools/core_ext' +require 'eac_git/local' module Avm module Git module Issue class Complete require_sub __FILE__, include_modules: true enable_simple_cache enable_speaker - attr_reader :skip_validations + BRANCH_NAME_ISSUE_ID_PATTERN = + attr_reader :dir, :skip_validations + def initialize(options) consumer = ::EacRubyUtils::OptionsConsumer.new(options) - dir, @skip_validations = consumer.consume_all(:dir, :skip_validations) + @dir, @skip_validations = consumer.consume_all(:dir, :skip_validations) validate_skip_validations consumer.validate - @git = ::Avm::Launcher::Git::Base.new(dir) end def start_banner validations_banner end @@ -33,18 +35,31 @@ clipboard_copy_tracker_message true end def issue_id - m = branch_name.match(/\A#{Regexp.quote('issue_')}(\d+)\z/) - m ? m[1].to_i : nil + branch ? issue_id_parser.parse(branch_name) : nil end + # @return [EacRubyUtils::RegexpParser] + def issue_id_parser + /\A#{Regexp.quote('issue_')}(\d+)\z/.to_parser { |m| m[1].to_i } + end + private - def git(args, exit_outputs = {}) - r = @git.execute!(args, exit_outputs: exit_outputs) + # @return [EacGit::Local] + def eac_git_uncached + ::EacGit::Local.new(dir) + end + + def git_execute(args, exit_outputs = {}) + r = launcher_git.execute!(args, exit_outputs: exit_outputs) r.is_a?(String) ? r.strip : r + end + + def launcher_git_uncached + ::Avm::Launcher::Git::Base.new(dir) end end end end end