Sha256: ea8a40b2778a7878ee1ca4be220569c29a46aea94c9caf8234a4ea715f1520fd

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

require 'pre-commit/utils'

module PreCommit
  class Tabs

    attr_accessor :staged_files, :error_message

    # Maintaining the functionality of `call` for backwards compatibility
    # Currently, the call method is expected to:
    # * run a check
    # * print any corresponding error messages if the check fails
    def self.call
      check = new
      check.staged_files = Utils.staged_files('*')
      result = check.run

      if !result
        $stderr.puts check.error_message
        $stderr.puts
        $stderr.puts 'pre-commit: You can bypass this check using `git commit -n`'
        $stderr.puts
      end

      result
    end

    def run
      # There is nothing to check
      if staged_files.empty?
        return true
      end

      if detected_bad_code?
        @error_message = "pre-commit: detected tab before initial space:\n"
        @error_message += violations

        @passed = false
      else
        @passed = true
      end
    end

    LEADING_TAB_PATTERN = '^ *\t'

    def detected_bad_code?
      system("#{Utils.grep} -q '#{LEADING_TAB_PATTERN}' #{staged_files}")
    end

    def violations
      `#{Utils.grep} '#{LEADING_TAB_PATTERN}' #{staged_files}`
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pre-commit-0.8.1 lib/pre-commit/checks/tabs.rb
pre-commit-0.8.0 lib/pre-commit/checks/tabs.rb
pre-commit-0.7.0 lib/pre-commit/checks/tabs.rb