Sha256: e2ba0af4c3bec4bf7526342527656a267dc52f37ac528c40ca2122c2c3f4ed9b

Contents?: true

Size: 1.51 KB

Versions: 8

Compression:

Stored size: 1.51 KB

Contents

require 'pluginator'
require 'pre-commit/utils/staged_files'
require 'pre-commit/configuration'
require 'pre-commit/list_evaluator'

module PreCommit
  class Runner
    include PreCommit::Utils::StagedFiles

    attr_reader :pluginator, :config

    def initialize(stderr = nil, staged_files = nil, config = nil, pluginator = nil)
      @stderr       = (stderr       or $stderr)
      @pluginator   = (pluginator   or PreCommit.pluginator)
      @config       = (config       or PreCommit::Configuration.new(@pluginator))
      @staged_files = staged_files
    end

    def run
      run_single(:warnings)
      run_single(:checks  ) or return false
      true
    end

    def run_single(name)
      show_output(name, execute(list_to_run(name)))
    end

    def show_output(name, list)
      if list.any?
        @stderr.puts send(name, list)
        return false
      end
      true
    end

    def execute(list)
      list.map{|cmd| cmd.new(pluginator, config, list).call(staged_files.dup) }.compact
    end

    def list_to_run(name)
      list_evaluator.send(:"#{name}_evaluated", :list_to_run)
    end

    def list_evaluator
      @list_evaluator ||= PreCommit::ListEvaluator.new(config)
    end

    def warnings(list)
      <<-WARNINGS
pre-commit: Some warnings were raised. These will not stop commit:
#{list.join("\n")}
WARNINGS
    end

    def checks(list)
      <<-ERRORS
pre-commit: Stopping commit because of errors.
#{list.join("\n")}
pre-commit: You can bypass this check using `git commit -n`

ERRORS
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pre-commit-0.16.3 lib/pre-commit/runner.rb
pre-commit-0.16.2 lib/pre-commit/runner.rb
pre-commit-0.16.1 lib/pre-commit/runner.rb
pre-commit-0.16.0 lib/pre-commit/runner.rb
pre-commit-0.15.0 lib/pre-commit/runner.rb
pre-commit-0.14.1 lib/pre-commit/runner.rb
pre-commit-0.14.0 lib/pre-commit/runner.rb
pre-commit-0.13.0 lib/pre-commit/runner.rb