Sha256: 640b9de8d9bd8d409fe9a50b1466d4fcd8f8e329675061cc232b5fb72c70c0a4

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module Steep
  module Drivers
    class Validate
      attr_reader :stdout
      attr_reader :stderr

      include Utils::DriverHelper

      def initialize(stdout:, stderr:)
        @stdout = stdout
        @stderr = stderr
      end

      def run
        project = load_config()

        loader = Project::FileLoader.new(project: project)
        loader.load_signatures()

        type_check(project)

        project.targets.each do |target|
          Steep.logger.tagged "target=#{target.name}" do
            case (status = target.status)
            when Project::Target::SignatureErrorStatus
              formatter = Diagnostic::LSPFormatter.new
              diagnostics = status.errors.group_by {|e| e.location.buffer }.transform_values do |errors|
                errors.map {|error| formatter.format(error) }
              end

              diagnostics.each do |buffer, ds|
                printer = DiagnosticPrinter.new(stdout: stdout, buffer: buffer)
                ds.each do |d|
                  printer.print(d)
                  stdout.puts
                end
              end
            end
          end
        end

        project.targets.all? {|target| target.status.is_a?(Project::Target::TypeCheckStatus) } ? 0 : 1
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
steep-0.41.0 lib/steep/drivers/validate.rb
steep-0.40.0 lib/steep/drivers/validate.rb