Sha256: f286a8d9688faf6d643320249a70c3ca6762963752460bc9fb599ce7964049b7

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

# typed: ignore
require 'sorbet-runtime'
require "sorbet_auto_typer/version"
require "sorbet_auto_typer/configuration"
require "sorbet_auto_typer/tracer"
require "sorbet_auto_typer/method_trace"
require "sorbet_auto_typer/source_rewriter"
require "sorbet_auto_typer/annotator"

module SorbetAutoTyper
  class Error < StandardError; end
  class MissingConfigurationError < Error; end
  class InvalidConfigurationError < Error; end
  class TracerAlreadyRunning < Error; end

  class << self
    extend T::Sig

    sig { void }
    def start!
      raise MissingConfigurationError.new if !@config
      raise InvalidConfigurationError.new unless @config.valid?
      raise TracerAlreadyRunning.new unless @current_tracer.nil?

      output_file = File.open(T.must(@config.output_file), 'w')

      @current_tracer = Tracer.new(output_file, T.must(@config.filter_path))
      @current_tracer.start!
    end

    sig { void }
    def stop!
      @current_tracer = T.let(@current_tracer, T.nilable(Tracer))
      unless @current_tracer.nil?
        @current_tracer.stop!
        @current_tracer = nil
      end
    end

    sig { params(blk: T.proc.params(arg0: Configuration).void).void }
    def configure(&blk)
      config = Configuration.new(output_file: nil)
      yield config
      @config = T.let(config, T.nilable(Configuration))
    end

    sig { void }
    def reset!
      stop!
      @config = nil
    end

    private
    sig { returns(T.nilable(Configuration)) }
    attr_reader :config
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sorbet_auto_typer-0.1.0 lib/sorbet_auto_typer.rb