diff --git a/Library/Homebrew/dev-cmd/typecheck.rb b/Library/Homebrew/dev-cmd/typecheck.rb index 4789caa7df101..0072ddf8c4f0f 100644 --- a/Library/Homebrew/dev-cmd/typecheck.rb +++ b/Library/Homebrew/dev-cmd/typecheck.rb @@ -51,7 +51,6 @@ def run tapioca_args = args.update_all? ? ["--all"] : [] ohai "Updating homegrown RBI files..." - safe_system "bundle", "exec", "ruby", "sorbet/custom_generators/tty.rb" safe_system "bundle", "exec", "ruby", "sorbet/custom_generators/env_config.rb" ohai "Updating Tapioca RBI files..." diff --git a/Library/Homebrew/sorbet/custom_generators/tty.rb b/Library/Homebrew/sorbet/custom_generators/tty.rb deleted file mode 100644 index 3cab79d2d2311..0000000000000 --- a/Library/Homebrew/sorbet/custom_generators/tty.rb +++ /dev/null @@ -1,31 +0,0 @@ -# typed: true -# frozen_string_literal: true - -require_relative "../../global" -require_relative "../../env_config" -require_relative "../../utils/tty" - -File.open("#{File.dirname(__FILE__)}/../../utils/tty.rbi", "w") do |file| - file.write(<<~RUBY) - # typed: strict - - module Tty - RUBY - - dynamic_methods = Tty::COLOR_CODES.keys + Tty::STYLE_CODES.keys + Tty::SPECIAL_CODES.keys - methods = Tty.methods(false).sort.select { |method| dynamic_methods.include?(method) } - - methods.each do |method| - return_type = (method.to_s.end_with?("?") ? T::Boolean : String) - signature = "sig { returns(#{return_type}) }" - - file.write(<<-RUBY) - #{signature} - def self.#{method}; end - RUBY - - file.write("\n") if methods.last != method - end - - file.write("end\n") -end diff --git a/Library/Homebrew/sorbet/rbi/dsl/tty.rbi b/Library/Homebrew/sorbet/rbi/dsl/tty.rbi new file mode 100644 index 0000000000000..c8b83d867a431 --- /dev/null +++ b/Library/Homebrew/sorbet/rbi/dsl/tty.rbi @@ -0,0 +1,66 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for dynamic methods in `Tty`. +# Please instead update this file by running `bin/tapioca dsl Tty`. + +module Tty + class << self + sig { returns(String) } + def blue; end + + sig { returns(String) } + def bold; end + + sig { returns(String) } + def cyan; end + + sig { returns(String) } + def default; end + + sig { returns(String) } + def down; end + + sig { returns(String) } + def erase_char; end + + sig { returns(String) } + def erase_line; end + + sig { returns(String) } + def green; end + + sig { returns(String) } + def italic; end + + sig { returns(String) } + def left; end + + sig { returns(String) } + def magenta; end + + sig { returns(String) } + def no_underline; end + + sig { returns(String) } + def red; end + + sig { returns(String) } + def reset; end + + sig { returns(String) } + def right; end + + sig { returns(String) } + def strikethrough; end + + sig { returns(String) } + def underline; end + + sig { returns(String) } + def up; end + + sig { returns(String) } + def yellow; end + end +end diff --git a/Library/Homebrew/sorbet/tapioca/compilers/tty.rb b/Library/Homebrew/sorbet/tapioca/compilers/tty.rb new file mode 100644 index 0000000000000..c24e60e386750 --- /dev/null +++ b/Library/Homebrew/sorbet/tapioca/compilers/tty.rb @@ -0,0 +1,30 @@ +# typed: strict +# frozen_string_literal: true + +require_relative "../../../global" +require "utils/tty" + +module Tapioca + module Compilers + class Tty < Tapioca::Dsl::Compiler + # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed. + # rubocop:disable Style/MutableConstant + ConstantType = type_member { { fixed: Module } } + # rubocop:enable Style/MutableConstant + + sig { override.returns(T::Enumerable[Module]) } + def self.gather_constants = [::Tty] + + sig { override.void } + def decorate + root.create_module(T.must(constant.name)) do |mod| + dynamic_methods = ::Tty::COLOR_CODES.keys + ::Tty::STYLE_CODES.keys + ::Tty::SPECIAL_CODES.keys + + dynamic_methods.each do |method| + mod.create_method(method.to_s, return_type: "String", class_method: true) + end + end + end + end + end +end diff --git a/Library/Homebrew/utils/tty.rbi b/Library/Homebrew/utils/tty.rbi deleted file mode 100644 index b92c259d6db26..0000000000000 --- a/Library/Homebrew/utils/tty.rbi +++ /dev/null @@ -1,60 +0,0 @@ -# typed: strict - -module Tty - sig { returns(String) } - def self.blue; end - - sig { returns(String) } - def self.bold; end - - sig { returns(String) } - def self.cyan; end - - sig { returns(String) } - def self.default; end - - sig { returns(String) } - def self.down; end - - sig { returns(String) } - def self.erase_char; end - - sig { returns(String) } - def self.erase_line; end - - sig { returns(String) } - def self.green; end - - sig { returns(String) } - def self.italic; end - - sig { returns(String) } - def self.left; end - - sig { returns(String) } - def self.magenta; end - - sig { returns(String) } - def self.no_underline; end - - sig { returns(String) } - def self.red; end - - sig { returns(String) } - def self.reset; end - - sig { returns(String) } - def self.right; end - - sig { returns(String) } - def self.strikethrough; end - - sig { returns(String) } - def self.underline; end - - sig { returns(String) } - def self.up; end - - sig { returns(String) } - def self.yellow; end -end