Extract global args

This commit is contained in:
Douglas Eichelberger 2024-03-16 08:35:02 -07:00
parent 131a5421a5
commit 4b358fc713
3 changed files with 23 additions and 28 deletions

View File

@ -0,0 +1,19 @@
# typed: strict
# This file contains global args as defined in `Homebrew::CLI::Parser.global_options`
# `Command`-specific args are defined in the commands themselves, with type signatures
# generated by the `Tapioca::Compilers::Args` compiler.
class Homebrew::CLI::Args
sig { returns(T::Boolean) }
def debug?; end
sig { returns(T::Boolean) }
def help?; end
sig { returns(T::Boolean) }
def quiet?; end
sig { returns(T::Boolean) }
def verbose?; end
end

View File

@ -146,18 +146,12 @@ class Homebrew::CLI::Args
sig { returns(T::Boolean) }
def custom_remote?; end
sig { returns(T::Boolean) }
def d?; end
sig { returns(T.nilable(String)) }
def days; end
sig { returns(T::Boolean) }
def debian?; end
sig { returns(T::Boolean) }
def debug?; end
sig { returns(T::Boolean) }
def debug_symbols?; end
@ -317,12 +311,6 @@ class Homebrew::CLI::Args
sig { returns(T.nilable(T::Array[String])) }
def groups; end
sig { returns(T::Boolean) }
def h?; end
sig { returns(T::Boolean) }
def help?; end
sig { returns(T.nilable(T::Array[String])) }
def hide; end
@ -623,18 +611,12 @@ class Homebrew::CLI::Args
sig { returns(T.nilable(String)) }
def python_package_name; end
sig { returns(T::Boolean) }
def q?; end
sig { returns(T.nilable(String)) }
def qlplugindir; end
sig { returns(T::Boolean) }
def quarantine?; end
sig { returns(T::Boolean) }
def quiet?; end
sig { returns(T.nilable(String)) }
def r; end
@ -824,15 +806,9 @@ class Homebrew::CLI::Args
sig { returns(T.nilable(T::Array[String])) }
def user; end
sig { returns(T::Boolean) }
def v?; end
sig { returns(T::Boolean) }
def variations?; end
sig { returns(T::Boolean) }
def verbose?; end
sig { returns(T.nilable(String)) }
def version; end

View File

@ -44,7 +44,7 @@ module Tapioca
next if NON_PARSER_ARGS_METHODS.include?(args_method_name)
parser = Homebrew.method(args_method_name).call
create_args_methods(klass, parser, include_global: true)
create_args_methods(klass, parser)
end
end
else
@ -79,12 +79,12 @@ module Tapioca
private
sig { params(klass: RBI::Scope, parser: Homebrew::CLI::Parser, include_global: T::Boolean).void }
def create_args_methods(klass, parser, include_global: false)
sig { params(klass: RBI::Scope, parser: Homebrew::CLI::Parser).void }
def create_args_methods(klass, parser)
comma_array_methods = comma_arrays(parser)
args_table(parser).each do |method_name, value|
method_name_str = method_name.to_s
next if GLOBAL_OPTIONS.include?(method_name_str) && !include_global
next if GLOBAL_OPTIONS.include?(method_name_str)
# some args are used in multiple commands (this is ok as long as they have the same type)
next if klass.nodes.any? { T.cast(_1, RBI::Method).name == method_name_str }