Sha256: ef15b90a45dbb60b1aef103550d19d5648264c21140b4e3d324c2636b08c191f

Contents?: true

Size: 992 Bytes

Versions: 9

Compression:

Stored size: 992 Bytes

Contents

# frozen_string_literal: true

module Git
  module Lint
    class Runner
      def initialize configuration:, branch: Branches::Feature.new, collector: Collector.new
        @configuration = configuration
        @branch = branch
        @collector = collector
      end

      def call commits: branch.commits
        commits.map { |commit| check commit }
        collector
      end

      private

      attr_reader :configuration, :branch, :collector

      def check commit
        configuration.map { |id, settings| load_analyzer id, commit, settings }
                     .select(&:enabled?)
                     .map { |analyzer| collector.add analyzer }
      end

      def load_analyzer id, commit, settings
        klass = Analyzers::Abstract.descendants.find { |descendant| descendant.id == id }
        fail Errors::Base, "Invalid analyzer: #{id}. See docs for supported analyzer." unless klass

        klass.new commit: commit, settings: settings
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
git-lint-2.4.0 lib/git/lint/runner.rb
git-lint-2.3.3 lib/git/lint/runner.rb
git-lint-2.3.2 lib/git/lint/runner.rb
git-lint-2.3.1 lib/git/lint/runner.rb
git-lint-2.3.0 lib/git/lint/runner.rb
git-lint-2.2.1 lib/git/lint/runner.rb
git-lint-2.2.0 lib/git/lint/runner.rb
git-lint-2.1.0 lib/git/lint/runner.rb
git-lint-2.0.0 lib/git/lint/runner.rb