Sha256: 9b83ef4b48084c30b64a5958779215a959f98ac536018332d0d5b84a44cf76f6

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

module Overcommit::GitHook
  class HamlStyle < HookSpecificCheck
    include HookRegistry
    file_types :haml

    def run_check
      unless in_path?('haml-lint')
        return :warn, 'haml-lint not installed -- run `gem install haml-lint`'
      end

      paths_to_staged_files = Hash[staged.map { |s| [s.path, s] }]
      staged_files = paths_to_staged_files.keys

      output = `haml-lint #{staged_files.join(' ')} 2>&1`
      return :good if $?.success?

      # Keep lines from the output for files that we actually modified
      error_lines, warning_lines = output.lines.partition do |output_line|
        if match = output_line.match(/^([^:]+):(\d+)/)
          file = match[1]
          line = match[2]
        end
        unless paths_to_staged_files[file]
          return :warn, "Unexpected output from haml-lint:\n#{output}"
        end
        paths_to_staged_files[file].modified_lines.include?(line.to_i)
      end

      return :bad, error_lines.join unless error_lines.empty?
      return :warn, "Modified files have lints (on lines you didn't modify)\n" <<
                    warning_lines.join
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
overcommit-0.5.0 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.4.1 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.4.0 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.3.2 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.3.1 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.3.0 lib/overcommit/plugins/pre_commit/haml_style.rb
overcommit-0.2.6 lib/overcommit/plugins/pre_commit/haml_style.rb