Sha256: 39575636839b8c09fe097218f7f53506838ab9335c3b8409470491418d6e6d62

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

require_relative 'github_client'

module CircleCI
  module CoverageReporter
    class Runner
      # @return [void]
      def run
        dump
        reports = reporters.map { |reporter| reporter.report(base_build, previous_build) }
        vcs_client.create_comment(reports)
      end

      private

      # @return [void]
      def dump
        puts <<-EOF
Runner            | Value
------------------|-----------------------------------------------------------------------------------
base_build        | #{base_build.inspect}
base_build_number | #{base_build_number.inspect}
previous_build    | #{previous_build.inspect}
        EOF
      end

      # @return [AbstractVCSClient]
      def vcs_client
        case client.configuration.vcs_type
        when 'github'
          GitHubClient.new(client.configuration.vcs_token)
        else
          raise NotImplementedError
        end
      end

      # @return [Build, nil]
      def base_build
        @base_build ||= client.single_build(base_build_number)
      end

      # @return [Build, nil]
      def previous_build
        @previous_build ||= client.single_build(previous_build_number)
      end

      # @return [Client]
      def client
        CoverageReporter.client
      end

      # @return [String, nil]
      def base_revision
        client.configuration.base_revision
      end

      # @return [Integer, nil]
      def previous_build_number
        client.configuration.previous_build_number
      end

      # @return [Array<AbstractReporter>]
      def reporters
        client.configuration.reporters
      end

      # @return [Integer, nil]
      def base_build_number
        return if client.configuration.base_revision == client.configuration.current_revision
        @base_build_number ||= client.build_number_by_revision(base_revision, branch: 'master')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
circleci-coverage_reporter-0.1.3 lib/circleci/coverage_reporter/runner.rb