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