module RuboCop::Cop::Sorbet::TargetSorbetVersion

def enabled_for_sorbet_static_version?

def enabled_for_sorbet_static_version?
  sorbet_static_version = target_sorbet_static_version_from_bundler_lock_file
  return false unless sorbet_static_version
  self.class.supports_target_sorbet_static_version?(sorbet_static_version)
end

def included(target)

def included(target)
  target.extend(ClassMethods)
end

def read_sorbet_static_version_from_bundler_lock_file

def read_sorbet_static_version_from_bundler_lock_file
  require "bundler"
  ::Bundler.locked_gems.specs.find { |spec| spec.name == "sorbet-static" }&.version
rescue LoadError, ::Bundler::GemfileNotFound
  nil
end

def sorbet_enabled?

def sorbet_enabled?
  !target_sorbet_static_version_from_bundler_lock_file.nil?
end

def target_sorbet_static_version_from_bundler_lock_file

def target_sorbet_static_version_from_bundler_lock_file
  # Do memoization with the `defined?` pattern since sorbet-static version might be `nil`
  if defined?(@target_sorbet_static_version_from_bundler_lock_file)
    @target_sorbet_static_version_from_bundler_lock_file
  else
    @target_sorbet_static_version_from_bundler_lock_file = read_sorbet_static_version_from_bundler_lock_file
  end
end