lpender/bummr

View on GitHub
lib/bummr/check.rb

Summary

Maintainability
A
25 mins
Test Coverage
A
100%
module Bummr
  class Check < Thor
    include Singleton
    include Bummr::Prompt

    desc "check", "Run automated checks to see if bummr can be run"
    def check(fullcheck=true)
      @errors = []

      check_base_branch
      check_log
      check_status

      if fullcheck == true
        check_diff
      end

      if @errors.any?
        unless yes? "Bummr found errors! Do you want to continue anyway?".color(:red)
          exit 0
        end
      else
        puts "Ready to run bummr.".color(:green)
      end
    end

    private

    def check_base_branch
      if `git rev-parse --abbrev-ref HEAD` == "#{BASE_BRANCH}\n"
        message = "Bummr is not meant to be run on your base branch"
        puts message.color(:red)
        puts "Please checkout a branch with 'git checkout -b update-gems'"
        @errors.push message
      end
    end

    def check_log
      unless File.directory? "log"
        message = "There is no log directory or you are not in the root"
        puts message.color(:red)
        @errors.push message
      end
    end

    def check_status
      status = `git status`

      if status.index 'are currently'
        message = ""

        if status.index 'rebasing'
          message += "You are already rebasing. "
        elsif status.index 'bisecting'
          message += "You are already bisecting. "
        end

        message += "Make sure `git status` is clean"
        puts message.color(:red)
        @errors.push message
      end
    end

    def check_diff
      unless `git diff #{BASE_BRANCH}`.empty?
        message = "Please make sure that `git diff #{BASE_BRANCH}` returns empty"
        puts message.color(:red)
        @errors.push message
      end
    end
  end
end