Sha256: f76187b94e889dbdf90c1e098004c79aa47e9a1df3bf971e91f70db94b6b3c5b

Contents?: true

Size: 949 Bytes

Versions: 7

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

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

      def call commits: Branches::Feature.new.commits
        Array(commits).map { |commit| check commit }
        collector
      end

      private

      attr_reader :configuration, :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

7 entries across 7 versions & 1 rubygems

Version Path
git-lint-1.4.0 lib/git/lint/runner.rb
git-lint-1.3.0 lib/git/lint/runner.rb
git-lint-1.2.0 lib/git/lint/runner.rb
git-lint-1.1.1 lib/git/lint/runner.rb
git-lint-1.1.0 lib/git/lint/runner.rb
git-lint-1.0.1 lib/git/lint/runner.rb
git-lint-1.0.0 lib/git/lint/runner.rb