class GitSnip::Cleaner

Public Class Methods

new(path, target_branch = 'master', ignored_branches = []) click to toggle source
# File lib/git_snip/cleaner.rb, line 7
def initialize(path, target_branch = 'master', ignored_branches = [])
  @path = path
  @target_branch = target_branch
  @ignored_branches = ignored_branches
  @git = Git.init(path)
end

Public Instance Methods

delete_merged_branches() { |branch| ... } click to toggle source
# File lib/git_snip/cleaner.rb, line 18
def delete_merged_branches
  checkout_target_branch

  merged_branches.map do |branch|
    delete = true
    delete = yield branch if block_given?

    if delete
      branch.delete
      branch
    else
      nil
    end
  end.to_a
end
merged_branches() click to toggle source
# File lib/git_snip/cleaner.rb, line 14
def merged_branches
  local_branches.select { |branch| merged?(branch) }
end

Private Instance Methods

checkout_target_branch() click to toggle source
# File lib/git_snip/cleaner.rb, line 47
def checkout_target_branch
  @git.checkout(@target_branch)
end
local_branches() click to toggle source
# File lib/git_snip/cleaner.rb, line 36
def local_branches
  @git.branches.local.lazy.reject do |branch|
    branch.name == @target_branch || @ignored_branches.include?(branch.name)
  end
end
merged?(branch) click to toggle source
# File lib/git_snip/cleaner.rb, line 42
def merged?(branch)
  @git.lib.send(:command, 'cherry', [@target_branch, branch.name])
    .each_line.all? { |line| line.start_with?('-') }
end