Sha256: 5b7aa6709a44eb3a6cc0ff7ad7ab4ca138bcd973f5ef95b5264e65c1fadaa2de

Contents?: true

Size: 1.94 KB

Versions: 16

Compression:

Stored size: 1.94 KB

Contents

# typed: true
require("sorbet-rails/mailer_rbi_formatter")
require("sorbet-rails/job_rbi_formatter")

module SorbetRails
  class << self
    extend T::Sig

    sig { params(blk: T.proc.params(arg0: Config).void).void }
    def configure(&blk)
      yield config

      # After user has configured, register any plugins the user has added to
      # their configuration.
      register_configured_plugins
    end

    sig { returns(Config) }
    def config
      @_config ||= Config.new
    end

    sig { void }
    def register_configured_plugins
      config.enabled_plugins.each do |plugin_name|
        SorbetRails::ModelRbiFormatter.register_plugin_by_name(plugin_name)
      end
    end
  end

  class Config
    extend T::Sig

    sig { returns(T::Array[Symbol]) }
    attr_accessor :enabled_gem_plugins

    sig { returns(T::Array[Symbol]) }
    attr_accessor :enabled_model_plugins

    sig { returns(T::Array[String]) }
    attr_accessor :extra_helper_includes

    sig { returns(T.class_of(SorbetRails::JobRbiFormatter))}
    attr_accessor :job_generator_class

    sig { returns(T.class_of(SorbetRails::MailerRbiFormatter))}
    attr_accessor :mailer_generator_class

    sig { void }
    def initialize
      @enabled_gem_plugins = []
      @enabled_model_plugins = [
        :active_record_enum,
        :active_record_named_scope,
        :active_record_querying,
        :active_relation_where_not,
        :active_record_serialized_attribute,
        :active_record_attribute,
        :active_record_assoc,
        :custom_finder_methods,
        :enumerable_collections,
      ]
      @enabled_model_plugins << :active_storage_methods if defined?(T.unsafe(ActiveStorage))
      @extra_helper_includes = []
      @mailer_generator_class = SorbetRails::MailerRbiFormatter
      @job_generator_class = SorbetRails::JobRbiFormatter
    end

    sig { returns(T::Array[Symbol]) }
    def enabled_plugins
      @enabled_model_plugins + @enabled_gem_plugins
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
sorbet-rails-0.7.34 lib/sorbet-rails/config.rb
sorbet-rails-0.7.33 lib/sorbet-rails/config.rb
sorbet-rails-0.7.32 lib/sorbet-rails/config.rb
sorbet-rails-0.7.31 lib/sorbet-rails/config.rb
sorbet-rails-0.7.27 lib/sorbet-rails/config.rb
sorbet-rails-0.7.26 lib/sorbet-rails/config.rb
sorbet-rails-0.7.25 lib/sorbet-rails/config.rb
sorbet-rails-0.7.24 lib/sorbet-rails/config.rb
sorbet-rails-0.7.23 lib/sorbet-rails/config.rb
sorbet-rails-0.7.22 lib/sorbet-rails/config.rb
sorbet-rails-0.7.20 lib/sorbet-rails/config.rb
sorbet-rails-0.7.19 lib/sorbet-rails/config.rb
sorbet-rails-0.7.18 lib/sorbet-rails/config.rb
sorbet-rails-0.7.5 lib/sorbet-rails/config.rb
sorbet-rails-0.7.4 lib/sorbet-rails/config.rb
sorbet-rails-0.7.3 lib/sorbet-rails/config.rb