Module: Tapioca::SorbetHelper
- Extended by:
- T::Sig
- Included in:
- Commands::AbstractDsl, Commands::AbstractGem, Commands::CheckShims, Commands::Todo, Dsl::Compilers::ActiveRecordRelations, Helpers::Test::DslCompiler::CompilerContext, RBIHelper, RBIHelper, Tapioca::Static::SymbolLoader
- Defined in:
- lib/tapioca/helpers/sorbet_helper.rb
Constant Summary collapse
- SORBET_GEM_SPEC =
: ::Gem::Specification
::Gem::Specification.find_by_name("sorbet-static")
- SORBET_BIN =
: Pathname
Pathname.new(SORBET_GEM_SPEC.full_gem_path) / "libexec" / "sorbet"
- SORBET_EXE_PATH_ENV_VAR =
"TAPIOCA_SORBET_EXE"
- SORBET_PAYLOAD_URL =
"https://github.com/sorbet/sorbet/tree/master/rbi"
- SPOOM_CONTEXT =
: Spoom::Context
Spoom::Context.new(".")
- FEATURE_REQUIREMENTS =
{ # feature_name: ::Gem::Requirement.new(">= ___"), # https://github.com/sorbet/sorbet/pull/___ }.freeze
Instance Method Summary collapse
-
#sorbet(*sorbet_args) ⇒ Object
: (*String sorbet_args) -> Spoom::ExecResult.
-
#sorbet_path ⇒ Object
: -> String.
-
#sorbet_supports?(feature, version: nil) ⇒ Boolean
: (Symbol feature, ?version: ::Gem::Version?) -> bool.
Instance Method Details
#sorbet(*sorbet_args) ⇒ Object
: (*String sorbet_args) -> Spoom::ExecResult
23 24 25 |
# File 'lib/tapioca/helpers/sorbet_helper.rb', line 23 def sorbet(*sorbet_args) SPOOM_CONTEXT.srb(sorbet_args.join(" "), sorbet_bin: sorbet_path) end |
#sorbet_path ⇒ Object
: -> String
28 29 30 31 32 |
# File 'lib/tapioca/helpers/sorbet_helper.rb', line 28 def sorbet_path sorbet_path = ENV.fetch(SORBET_EXE_PATH_ENV_VAR, SORBET_BIN) sorbet_path = SORBET_BIN if sorbet_path.empty? sorbet_path.to_s.shellescape end |
#sorbet_supports?(feature, version: nil) ⇒ Boolean
: (Symbol feature, ?version: ::Gem::Version?) -> bool
35 36 37 38 39 40 41 42 |
# File 'lib/tapioca/helpers/sorbet_helper.rb', line 35 def sorbet_supports?(feature, version: nil) version = SORBET_GEM_SPEC.version unless version requirement = FEATURE_REQUIREMENTS[feature] Kernel.raise "Invalid Sorbet feature #{feature}" unless requirement requirement.satisfied_by?(version) end |