Sha256: 4b85330afc331c52ca436740e2dc90d586109cadac9b2d8cdcf576c9d0c5d4ed

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

require 'thor'
require 'gitx'
require 'gitx/cli/base_command'

module Gitx
  module Cli
    class CleanupCommand < BaseCommand
      desc 'cleanup', 'Cleanup branches that have been merged into master from the repo'
      def cleanup
        checkout_branch config.base_branch
        run_git_cmd 'pull'
        run_git_cmd 'remote', 'prune', 'origin'

        say 'Deleting local and remote branches that have been merged into '
        say config.base_branch, :green
        merged_branches(remote: true).each do |branch|
          run_git_cmd 'push', 'origin', '--delete', branch
        end
        merged_branches(remote: false).each do |branch|
          run_git_cmd 'branch', '--delete', branch
        end
      end

      private

      # @return list of branches that have been merged
      def merged_branches(options = {})
        args = []
        args << '--remote' if options[:remote]
        args << '--merged'
        output = run_git_cmd('branch', *args).split("\n")
        branches = output.map do |branch|
          branch = branch.gsub(/\*/, '').strip.split(' ').first
          branch = branch.split('/').last if options[:remote]
          branch
        end
        branches.uniq!
        branches -= config.reserved_branches
        branches.reject! { |b| config.aggregate_branch?(b) }

        branches
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gitx-2.22.0.ci.154.1 lib/gitx/cli/cleanup_command.rb
gitx-2.22.0 lib/gitx/cli/cleanup_command.rb
gitx-2.21.5.ci.153.1 lib/gitx/cli/cleanup_command.rb
gitx-2.21.5.ci.151.1 lib/gitx/cli/cleanup_command.rb
gitx-2.21.5 lib/gitx/cli/cleanup_command.rb
gitx-2.21.4.ci.145.1 lib/gitx/cli/cleanup_command.rb
gitx-2.21.4 lib/gitx/cli/cleanup_command.rb