class GitEraser::Eraser

Public Instance Methods

delete_local_after_origin(branches) click to toggle source
# File lib/git_eraser.rb, line 173
def delete_local_after_origin(branches)
  current_directory = Dir.pwd
  begin
    g = Git.open("#{current_directory}")
    g.branches.local.each do |local_branch|
      # puts "Local: #{local_branch}"
      branches.each do |value|
        # puts "coming: #{value}"
        if local_branch.to_s == value
          local_branch.delete
        end
      end
    end
  rescue
  end
end
erase() click to toggle source
# File lib/git_eraser.rb, line 17
def erase
  erase_local if options[:local]
  erase_origin if options[:origin]
  Helper.new.print_no_flag_error_message if options.empty?
end
erase_local() click to toggle source
# File lib/git_eraser.rb, line 79
def erase_local
  current_directory = Dir.pwd

  Helper.new.print_cleanup_message
  begin
    g = Git.open("#{current_directory}")

    g.branches.local.each_with_index do |local_branch, index|
      puts "    ๐Ÿงน #{index + 1}. #{local_branch}"
    end

    puts "\n"

    inputStream = HighLine.new
    should_delete_branches = inputStream.agree("Delete these branches? (y/n) ")
    if should_delete_branches == true
      puts "\n"
      g.checkout('master')
      g.branches.local.each_with_index do |local_branch, index|
        begin
          if g.branch('master').contains?(local_branch)
            local_branch.delete
            puts "    #{index + 1}. '#{local_branch}' Removed โœ…"
          else
            puts "    #{index + 1}. '#{local_branch}' Not merged into 'master' โŒ"
          end
        rescue
          puts "    #{index + 1}. Can't remove '#{local_branch}' โŒ"
        end
      end
      puts "\n#{Rainbow("All local branches that merged to master had been deleted successfuly").underline.bright.green} ๐ŸŽ‰๐ŸŽ‰"
    end
    puts "\n"
  rescue
    Helper.new.print_no_git_error_message
  end
end
erase_origin() click to toggle source
# File lib/git_eraser.rb, line 119
def erase_origin
  current_directory = Dir.pwd

  Helper.new.print_cleanup_message
  begin
    g = Git.open("#{current_directory}")

    g.branches.remote.each_with_index do |origin_branch, index|
      puts "    ๐Ÿงน #{index + 1}. #{origin_branch}"
    end

    puts "\n"

    inputStream = HighLine.new
    should_delete_branches = inputStream.agree("Delete these branches? (y/n) ")

    if should_delete_branches == true
      puts "\n"
      Whirly.start do
        Whirly.status = "Deleting Origin Branches..."
        g.checkout('master')
        g.pull('origin', 'master')
        array_of_remote_deleted_branches = []
        g.branches.remote.each_with_index do |origin_branch, index|
          begin
            branch_string = origin_branch.to_s
            branch_string['remotes/origin/'] = ''
            g.checkout(branch_string)
            if g.branch('master').contains?(branch_string) && branch_string != 'master'
              system "git push -u origin --delete #{branch_string} -q"
              puts "    #{index + 1}. '#{origin_branch}' Removed โœ…"
              array_of_remote_deleted_branches.append(branch_string)
            elsif branch_string == 'master'
              puts "    #{index + 1}. '#{origin_branch}' Can't remove 'master' branch โŒ"
            else
              puts "    #{index + 1}. '#{origin_branch}' Not merged into 'master' โŒ"
            end
          rescue
            puts "    #{index + 1}. Can't remove '#{origin_branch}' โŒ"
          end
        end
        g.checkout('master')
        delete_local_after_origin(array_of_remote_deleted_branches)
        puts "\n#{Rainbow("All origin branches that merged to master had been deleted successfuly").underline.bright.green} ๐ŸŽ‰๐ŸŽ‰"
      end
    end
    puts "\n"
  rescue
    Helper.new.print_no_git_error_message
  end
end
preview() click to toggle source
# File lib/git_eraser.rb, line 26
def preview
  preview_local if options[:local]
  preview_origin if options[:origin]
  Helper.new.print_no_flag_error_message if options.empty?
end
preview_local() click to toggle source
# File lib/git_eraser.rb, line 33
def preview_local
  Git.configure do |config|
    # If you want to use a custom git binary
    config.binary_path = "/usr/bin/git"
  end
  current_directory = Dir.pwd

  Helper.new.print_preview_message('local')
  begin
    g = Git.open("#{current_directory}")

    g.branches.local.each_with_index do |local_branch, index|
      puts "    ๐Ÿงน #{index + 1}. #{local_branch}"
    end

    puts "\n"
  rescue
    Helper.new.print_no_git_error_message
  end
end
preview_origin() click to toggle source
# File lib/git_eraser.rb, line 56
def preview_origin
  Git.configure do |config|
    # If you want to use a custom git binary
    config.binary_path = "/usr/bin/git"
  end
  current_directory = Dir.pwd

  Helper.new.print_preview_message('origin')
  begin
    g = Git.open("#{current_directory}")

    g.branches.remote.each_with_index do |origin_branch, index|
      puts "    ๐Ÿงน #{index + 1}. #{origin_branch}"
    end

    puts "\n"
  rescue
    Helper.new.print_no_git_error_message
  end
end