Skip to content

Commit 768c10c

Browse files
authored
Merge pull request #20124 from Homebrew/add-cask-config-rbi-compiler
Add Cask::Config RBI compiler
2 parents d7d8c61 + 9c69859 commit 768c10c

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

Library/Homebrew/sorbet/rbi/dsl/cask/config.rbi

Lines changed: 58 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# typed: strict
2+
# frozen_string_literal: true
3+
4+
require_relative "../../../../global"
5+
require "cask/config"
6+
7+
module Tapioca
8+
module Compilers
9+
class CaskConfig < Tapioca::Dsl::Compiler
10+
ConstantType = type_member { { fixed: Module } }
11+
12+
sig { override.returns(T::Enumerable[Module]) }
13+
def self.gather_constants = [Cask::Config]
14+
15+
sig { override.void }
16+
def decorate
17+
root.create_module("Cask") do |mod|
18+
mod.create_class("Config") do |klass|
19+
Cask::Config.defaults.each do |key, value|
20+
return_type = if key == :languages
21+
# :languages is a `LazyObject`, so it lazily evaluates to an
22+
# array of strings when a method is called on it.
23+
"T::Array[String]"
24+
elsif key.end_with?("?")
25+
"T::Boolean"
26+
else
27+
value.class.to_s
28+
end
29+
30+
klass.create_method(key.to_s, return_type:, class_method: false)
31+
end
32+
end
33+
end
34+
end
35+
end
36+
end
37+
end

0 commit comments

Comments
 (0)