mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
38 lines
1.0 KiB
Ruby
38 lines
1.0 KiB
Ruby
![]() |
# typed: strict
|
||
|
# frozen_string_literal: true
|
||
|
|
||
|
require_relative "../../../../global"
|
||
|
require "cask/config"
|
||
|
|
||
|
module Tapioca
|
||
|
module Compilers
|
||
|
class CaskConfig < Tapioca::Dsl::Compiler
|
||
|
ConstantType = type_member { { fixed: Module } }
|
||
|
|
||
|
sig { override.returns(T::Enumerable[Module]) }
|
||
|
def self.gather_constants = [Cask::Config]
|
||
|
|
||
|
sig { override.void }
|
||
|
def decorate
|
||
|
root.create_module("Cask") do |mod|
|
||
|
mod.create_class("Config") do |klass|
|
||
|
Cask::Config.defaults.each do |key, value|
|
||
|
return_type = if key == :languages
|
||
|
# :languages is a `LazyObject`, so it lazily evaluates to an
|
||
|
# array of strings when a method is called on it.
|
||
|
"T::Array[String]"
|
||
|
elsif key.end_with?("?")
|
||
|
"T::Boolean"
|
||
|
else
|
||
|
value.class.to_s
|
||
|
end
|
||
|
|
||
|
klass.create_method(key.to_s, return_type:, class_method: false)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|