diff --git a/Library/Homebrew/cli/args.rbi b/Library/Homebrew/cli/args.rbi deleted file mode 100644 index 1b12fa96c2..0000000000 --- a/Library/Homebrew/cli/args.rbi +++ /dev/null @@ -1,364 +0,0 @@ -# typed: strict - -module Homebrew - module CLI - class Args < OpenStruct - sig { returns(T::Boolean) } - def remove_bottle_block?; end - - sig { returns(T::Boolean) } - def strict?; end - - sig { returns(T::Boolean) } - def HEAD?; end - - sig { returns(T::Boolean) } - def include_test?; end - - sig { returns(T::Boolean) } - def build_bottle?; end - - sig { returns(T::Boolean) } - def build_universal?; end - - sig { returns(T::Boolean) } - def build_from_source?; end - - sig { returns(T::Boolean) } - def force_bottle?; end - - sig { returns(T::Boolean) } - def newer_only?; end - - sig { returns(T::Boolean) } - def resources?; end - - sig { returns(T::Boolean) } - def full_name?; end - - sig { returns(T::Boolean) } - def json?; end - - sig { returns(T::Boolean) } - def debug?; end - - sig { returns(T::Boolean) } - def quiet?; end - - sig { returns(T::Boolean) } - def verbose?; end - - sig { returns(T::Boolean) } - def fetch_HEAD?; end - - sig { returns(T::Boolean) } - def cask?; end - - sig { returns(T::Boolean) } - def dry_run?; end - - sig { returns(T::Boolean) } - def skip_cask_deps?; end - - sig { returns(T::Boolean) } - def greedy?; end - - sig { returns(T::Boolean) } - def force?; end - - sig { returns(T::Boolean) } - def ignore_pinned?; end - - sig { returns(T::Boolean) } - def display_times?; end - - sig { returns(T::Boolean) } - def formula?; end - - sig { returns(T::Boolean) } - def zap?; end - - sig { returns(T::Boolean) } - def ignore_dependencies?; end - - sig { returns(T::Boolean) } - def aliases?; end - - sig { returns(T::Boolean) } - def fix?; end - - sig { returns(T::Boolean) } - def keep_tmp?; end - - sig { returns(T::Boolean) } - def debug_symbols?; end - - sig { returns(T::Boolean) } - def overwrite?; end - - sig { returns(T::Boolean) } - def silent?; end - - sig { returns(T::Boolean) } - def repair?; end - - sig { returns(T::Boolean) } - def prune_prefix?; end - - sig { returns(T::Boolean) } - def upload?; end - - sig { returns(T::Boolean) } - def linux?; end - - sig { returns(T::Boolean) } - def linux_self_hosted?; end - - sig { returns(T::Boolean) } - def linux_wheezy?; end - - sig { returns(T::Boolean) } - def total?; end - - sig { returns(T::Boolean) } - def dependents?; end - - sig { returns(T::Boolean) } - def installed?; end - - sig { returns(T::Boolean) } - def installed_on_request?; end - - sig { returns(T::Boolean) } - def installed_as_dependency?; end - - sig { returns(T::Boolean) } - def all?; end - - sig { returns(T::Boolean) } - def eval_all?; end - - sig { returns(T::Boolean) } - def full?; end - - sig { returns(T::Boolean) } - def list_pinned?; end - - sig { returns(T::Boolean) } - def display_cop_names?; end - - sig { returns(T::Boolean) } - def syntax?; end - - sig { returns(T::Boolean) } - def no_simulate?; end - - sig { returns(T::Boolean) } - def ignore_non_pypi_packages?; end - - sig { returns(T::Boolean) } - def test?; end - - sig { returns(T::Boolean) } - def reverse?; end - - sig { returns(T::Boolean) } - def print_only?; end - - sig { returns(T::Boolean) } - def markdown?; end - - sig { returns(T::Boolean) } - def reset_cache?; end - - sig { returns(T::Boolean) } - def major?; end - - sig { returns(T::Boolean) } - def minor?; end - - sig { returns(T.nilable(String)) } - def bottle_tag; end - - sig { returns(T.nilable(String)) } - def tag; end - - sig { returns(T.nilable(String)) } - def tap; end - - sig { returns(T.nilable(T::Array[String])) } - def macos; end - - sig { returns(T.nilable(T::Array[String])) } - def hide; end - - sig { returns(T.nilable(String)) } - def version; end - - sig { returns(T.nilable(String)) } - def name; end - - sig { returns(T::Boolean) } - def no_publish?; end - - sig { returns(T::Boolean) } - def shallow?; end - - sig { returns(T::Boolean) } - def fail_if_not_changed?; end - - sig { returns(T::Boolean) } - def no_pull_requests?; end - - sig { returns(T::Boolean) } - def no_fork?; end - - sig { returns(T::Boolean) } - def open_pr?; end - - sig { returns(T.nilable(String)) } - def limit; end - - sig { returns(T.nilable(String)) } - def start_with; end - - sig { returns(T.nilable(String)) } - def message; end - - sig { returns(T.nilable(String)) } - def timeout; end - - sig { returns(T.nilable(String)) } - def issue; end - - sig { returns(T.nilable(String)) } - def workflow; end - - sig { returns(T.nilable(String)) } - def package_name; end - - sig { returns(T.nilable(String)) } - def prune; end - - sig { returns(T.nilable(T::Array[String])) } - def only_cops; end - - sig { returns(T.nilable(T::Array[String])) } - def except_cops; end - - sig { returns(T.nilable(T::Array[String])) } - def only; end - - sig { returns(T.nilable(String)) } - def os; end - - sig { returns(T.nilable(T::Array[String])) } - def except; end - - sig { returns(T.nilable(T::Array[String])) } - def mirror; end - - sig { returns(T.nilable(T::Array[String])) } - def without_labels; end - - sig { returns(T.nilable(T::Array[String])) } - def workflows; end - - sig { returns(T.nilable(T::Array[String])) } - def ignore_missing_artifacts; end - - sig { returns(T.nilable(T::Array[String])) } - def language; end - - sig { returns(T.nilable(T::Array[String])) } - def extra_packages; end - - sig { returns(T.nilable(T::Array[String])) } - def exclude_packages; end - - sig { returns(T.nilable(T::Array[String])) } - def update; end - - sig { returns(T::Boolean) } - def s?; end - - sig { returns(T.nilable(String)) } - def arch; end - - sig { returns(T.nilable(String)) } - def appdir; end - - sig { returns(T.nilable(String)) } - def keyboard_layoutdir; end - - sig { returns(T.nilable(String)) } - def fontdir; end - - sig { returns(T.nilable(String)) } - def colorpickerdir; end - - sig { returns(T.nilable(String)) } - def prefpanedir; end - - sig { returns(T.nilable(String)) } - def qlplugindir; end - - sig { returns(T.nilable(String)) } - def dictionarydir; end - - sig { returns(T.nilable(String)) } - def servicedir; end - - sig { returns(T.nilable(String)) } - def input_methoddir; end - - sig { returns(T.nilable(String)) } - def mdimporterdir; end - - sig { returns(T.nilable(String)) } - def internet_plugindir; end - - sig { returns(T.nilable(String)) } - def audio_unit_plugindir; end - - sig { returns(T.nilable(String)) } - def vst_plugindir; end - - sig { returns(T.nilable(String)) } - def vst3_plugindir; end - - sig { returns(T.nilable(String)) } - def screen_saverdir; end - - sig { returns(T::Array[String]) } - def repositories; end - - sig { returns(T.nilable(String)) } - def from; end - - sig { returns(T.nilable(String)) } - def to; end - - sig { returns(T.nilable(T::Array[String])) } - def groups; end - - sig { returns(T::Boolean) } - def write_only?; end - - sig { returns(T::Boolean) } - def custom_remote?; end - - sig { returns(T::Boolean) } - def print_path?; end - - sig { returns(T.nilable(T::Boolean)) } - def force_auto_update?; end - - sig { returns(T::Boolean) } - def csv?; end - - sig { returns(T.nilable(String)) } - def user; end - end - end -end diff --git a/Library/Homebrew/sorbet/rbi/dsl/homebrew.rbi b/Library/Homebrew/sorbet/rbi/dsl/homebrew.rbi new file mode 100644 index 0000000000..0e5f924a81 --- /dev/null +++ b/Library/Homebrew/sorbet/rbi/dsl/homebrew.rbi @@ -0,0 +1,898 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for dynamic methods in `Homebrew`. +# Please instead update this file by running `bin/tapioca dsl Homebrew`. + +class Homebrew::CLI::Args + sig { returns(T::Boolean) } + def D?; end + + sig { returns(T::Boolean) } + def HEAD?; end + + sig { returns(T.nilable(T::Array[String])) } + def add_groups; end + + sig { returns(T::Boolean) } + def adopt?; end + + sig { returns(T::Boolean) } + def aliases?; end + + sig { returns(T::Boolean) } + def all_supported?; end + + sig { returns(T::Boolean) } + def analytics?; end + + sig { returns(T::Boolean) } + def annotate?; end + + sig { returns(T.nilable(String)) } + def appdir; end + + sig { returns(T.nilable(String)) } + def arch; end + + sig { returns(T::Boolean) } + def archlinux?; end + + sig { returns(T.nilable(String)) } + def artifact; end + + sig { returns(T.nilable(String)) } + def audio_unit_plugindir; end + + sig { returns(T::Boolean) } + def audit_debug?; end + + sig { returns(T::Boolean) } + def auto_update?; end + + sig { returns(T::Boolean) } + def autosquash?; end + + sig { returns(T::Boolean) } + def autotools?; end + + sig { returns(T.nilable(String)) } + def before; end + + sig { returns(T::Boolean) } + def binaries?; end + + sig { returns(T.nilable(String)) } + def bottle_arch; end + + sig { returns(T.nilable(String)) } + def bottle_tag; end + + sig { returns(T.nilable(String)) } + def branch; end + + sig { returns(T::Boolean) } + def branch_okay?; end + + sig { returns(T::Boolean) } + def build_bottle?; end + + sig { returns(T::Boolean) } + def build_from_source?; end + + sig { returns(T::Boolean) } + def byebug?; end + + sig { returns(T.nilable(String)) } + def c; end + + sig { returns(T::Boolean) } + def cached?; end + + sig { returns(T::Boolean) } + def cask?; end + + sig { returns(T::Boolean) } + def casks?; end + + sig { returns(T.nilable(String)) } + def category; end + + sig { returns(T.nilable(String)) } + def cc; end + + sig { returns(T::Boolean) } + def changed?; end + + sig { returns(T::Boolean) } + def clean?; end + + sig { returns(T::Boolean) } + def closed?; end + + sig { returns(T::Boolean) } + def cmake?; end + + sig { returns(T.nilable(String)) } + def cmd; end + + sig { returns(T.nilable(String)) } + def colorpickerdir; end + + sig { returns(T.nilable(String)) } + def command; end + + sig { returns(T.nilable(String)) } + def commit; end + + sig { returns(T::Boolean) } + def commit?; end + + sig { returns(T.nilable(String)) } + def committer; end + + sig { returns(T::Boolean) } + def compact?; end + + sig { returns(T::Boolean) } + def coverage?; end + + sig { returns(T::Boolean) } + def crystal?; end + + sig { returns(T::Boolean) } + def csv?; end + + 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 + + sig { returns(T::Boolean) } + def declared?; end + + sig { returns(T::Boolean) } + def dependents?; end + + sig { returns(T::Boolean) } + def deps?; end + + sig { returns(T::Boolean) } + def desc?; end + + sig { returns(T::Boolean) } + def description?; end + + sig { returns(T.nilable(String)) } + def destdir; end + + sig { returns(T.nilable(String)) } + def dictionarydir; end + + sig { returns(T.nilable(String)) } + def dir; end + + sig { returns(T::Boolean) } + def direct?; end + + sig { returns(T::Boolean) } + def display_cop_names?; end + + sig { returns(T::Boolean) } + def display_filename?; end + + sig { returns(T::Boolean) } + def display_times?; end + + sig { returns(T::Boolean) } + def dot?; end + + sig { returns(T::Boolean) } + def dry_run?; end + + sig { returns(T.nilable(String)) } + def e; end + + sig { returns(T.nilable(String)) } + def env; end + + sig { returns(T::Boolean) } + def eval_all?; end + + sig { returns(T::Boolean) } + def examples?; end + + sig { returns(T.nilable(T::Array[String])) } + def except; end + + sig { returns(T.nilable(T::Array[String])) } + def except_cops; end + + sig { returns(T.nilable(T::Array[String])) } + def exclude_packages; end + + sig { returns(T.nilable(T::Array[String])) } + def extra_packages; end + + sig { returns(T::Boolean) } + def f?; end + + sig { returns(T::Boolean) } + def fail_fast?; end + + sig { returns(T::Boolean) } + def fedora?; end + + sig { returns(T::Boolean) } + def fetch_HEAD?; end + + sig { returns(T.nilable(String)) } + def file; end + + sig { returns(T::Boolean) } + def fink?; end + + sig { returns(T::Boolean) } + def fix?; end + + sig { returns(T.nilable(String)) } + def fontdir; end + + sig { returns(T::Boolean) } + def for_each?; end + + sig { returns(T::Boolean) } + def force?; end + + sig { returns(T.nilable(String)) } + def force_auto_update?; end + + sig { returns(T::Boolean) } + def force_bottle?; end + + sig { returns(T::Boolean) } + def force_core_tap?; end + + sig { returns(T.nilable(String)) } + def fork_org; end + + sig { returns(T::Boolean) } + def formula?; end + + sig { returns(T::Boolean) } + def formulae?; end + + sig { returns(T.nilable(String)) } + def from; end + + sig { returns(T::Boolean) } + def full_name?; end + + sig { returns(T::Boolean) } + def g?; end + + sig { returns(T::Boolean) } + def generic?; end + + sig { returns(T::Boolean) } + def git?; end + + sig { returns(T::Boolean) } + def github?; end + + sig { returns(T::Boolean) } + def github_packages?; end + + sig { returns(T::Boolean) } + def github_packages_downloads?; end + + sig { returns(T::Boolean) } + def go?; end + + sig { returns(T::Boolean) } + def graph?; end + + sig { returns(T::Boolean) } + def greedy?; end + + sig { returns(T::Boolean) } + def greedy_auto_updates?; end + + sig { returns(T::Boolean) } + def greedy_latest?; end + + 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 + + sig { returns(T::Boolean) } + def i?; end + + sig { returns(T.nilable(String)) } + def ignore; end + + sig { returns(T::Boolean) } + def ignore_dependencies?; end + + sig { returns(T::Boolean) } + def ignore_failures?; end + + sig { returns(T.nilable(T::Array[String])) } + def ignore_missing_artifacts; end + + sig { returns(T::Boolean) } + def ignore_non_pypi_packages?; end + + sig { returns(T::Boolean) } + def ignore_pinned?; end + + sig { returns(T::Boolean) } + def include_aliases?; end + + sig { returns(T::Boolean) } + def include_build?; end + + sig { returns(T::Boolean) } + def include_optional?; end + + sig { returns(T::Boolean) } + def include_requirements?; end + + sig { returns(T::Boolean) } + def include_test?; end + + sig { returns(T.nilable(String)) } + def input_methoddir; end + + sig { returns(T::Boolean) } + def install_dependencies?; end + + sig { returns(T::Boolean) } + def installed?; end + + sig { returns(T::Boolean) } + def installed_as_dependency?; end + + sig { returns(T::Boolean) } + def installed_on_request?; end + + sig { returns(T::Boolean) } + def interactive?; end + + sig { returns(T.nilable(String)) } + def internet_plugindir; end + + sig { returns(T.nilable(String)) } + def issue; end + + sig { returns(T.nilable(String)) } + def json; end + + sig { returns(T::Boolean) } + def json?; end + + sig { returns(T::Boolean) } + def keep_old?; end + + sig { returns(T::Boolean) } + def keep_tmp?; end + + sig { returns(T.nilable(String)) } + def keyboard_layoutdir; end + + sig { returns(T::Boolean) } + def l?; end + + sig { returns(T.nilable(T::Array[String])) } + def language; end + + sig { returns(T::Boolean) } + def large_runner?; end + + sig { returns(T.nilable(String)) } + def limit; end + + sig { returns(T::Boolean) } + def linux?; end + + sig { returns(T::Boolean) } + def linux_self_hosted?; end + + sig { returns(T::Boolean) } + def linux_wheezy?; end + + sig { returns(T::Boolean) } + def list_checks?; end + + sig { returns(T::Boolean) } + def lost?; end + + sig { returns(T.nilable(T::Array[String])) } + def macos; end + + sig { returns(T::Boolean) } + def macports?; end + + sig { returns(T::Boolean) } + def major?; end + + sig { returns(T.nilable(String)) } + def max_count; end + + sig { returns(T.nilable(String)) } + def mdimporterdir; end + + sig { returns(T::Boolean) } + def merge?; end + + sig { returns(T::Boolean) } + def meson?; end + + sig { returns(T.nilable(String)) } + def message; end + + sig { returns(T::Boolean) } + def minor?; end + + sig { returns(T.nilable(T::Array[String])) } + def mirror; end + + sig { returns(T::Boolean) } + def missing?; end + + sig { returns(T::Boolean) } + def multiple?; end + + sig { returns(T.nilable(String)) } + def n; end + + sig { returns(T::Boolean) } + def n?; end + + sig { returns(T::Boolean) } + def name?; end + + sig { returns(T::Boolean) } + def new?; end + + sig { returns(T::Boolean) } + def new_cask?; end + + sig { returns(T::Boolean) } + def new_formula?; end + + sig { returns(T::Boolean) } + def new_issue?; end + + sig { returns(T::Boolean) } + def newer_only?; end + + sig { returns(T::Boolean) } + def no_all_checks?; end + + sig { returns(T::Boolean) } + def no_audit?; end + + sig { returns(T::Boolean) } + def no_browse?; end + + sig { returns(T::Boolean) } + def no_cherry_pick?; end + + sig { returns(T::Boolean) } + def no_commit?; end + + sig { returns(T::Boolean) } + def no_fetch?; end + + sig { returns(T::Boolean) } + def no_fork?; end + + sig { returns(T::Boolean) } + def no_git?; end + + sig { returns(T::Boolean) } + def no_pull_requests?; end + + sig { returns(T::Boolean) } + def no_rebuild?; end + + sig { returns(T::Boolean) } + def no_simulate?; end + + sig { returns(T::Boolean) } + def no_style?; end + + sig { returns(T::Boolean) } + def no_upload?; end + + sig { returns(T::Boolean) } + def node?; end + + sig { returns(T::Boolean) } + def non_bundler_gems?; end + + sig { returns(T::Boolean) } + def oneline?; end + + sig { returns(T::Boolean) } + def online?; end + + sig { returns(T.nilable(String)) } + def only; end + + sig { returns(T.nilable(T::Array[String])) } + def only_cops; end + + sig { returns(T::Boolean) } + def only_dependencies?; end + + sig { returns(T::Boolean) } + def only_json_tab?; end + + sig { returns(T::Boolean) } + def open?; end + + sig { returns(T::Boolean) } + def open_pr?; end + + sig { returns(T::Boolean) } + def opensuse?; end + + sig { returns(T.nilable(String)) } + def os; end + + sig { returns(T::Boolean) } + def overwrite?; end + + sig { returns(T::Boolean) } + def p?; end + + sig { returns(T.nilable(String)) } + def package_name; end + + sig { returns(T::Boolean) } + def patch?; end + + sig { returns(T::Boolean) } + def perl?; end + + sig { returns(T::Boolean) } + def pinned?; end + + sig { returns(T::Boolean) } + def plain?; end + + sig { returns(T.nilable(String)) } + def prefpanedir; end + + sig { returns(T::Boolean) } + def preinstall?; end + + sig { returns(T::Boolean) } + def print_only?; end + + sig { returns(T::Boolean) } + def print_path?; end + + sig { returns(T::Boolean) } + def private?; end + + sig { returns(T.nilable(String)) } + def profile; end + + sig { returns(T.nilable(String)) } + def prune; end + + sig { returns(T::Boolean) } + def prune_prefix?; end + + sig { returns(T::Boolean) } + def pry?; end + + sig { returns(T::Boolean) } + def publish?; end + + sig { returns(T.nilable(String)) } + def pull_label; end + + sig { returns(T::Boolean) } + def pull_request?; end + + sig { returns(T::Boolean) } + def python?; end + + sig { returns(T.nilable(T::Array[String])) } + def python_exclude_packages; end + + sig { returns(T.nilable(T::Array[String])) } + def python_extra_packages; end + + 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 + + sig { returns(T::Boolean) } + def r?; end + + sig { returns(T::Boolean) } + def recursive?; end + + sig { returns(T::Boolean) } + def remove_bottle_block?; end + + sig { returns(T::Boolean) } + def repair?; end + + sig { returns(T::Boolean) } + def repology?; end + + sig { returns(T.nilable(T::Array[String])) } + def repositories; end + + sig { returns(T::Boolean) } + def require_sha?; end + + sig { returns(T::Boolean) } + def reset_cache?; end + + sig { returns(T::Boolean) } + def resolve?; end + + sig { returns(T::Boolean) } + def resources?; end + + sig { returns(T::Boolean) } + def retain_bottle_dir?; end + + sig { returns(T::Boolean) } + def retry?; end + + sig { returns(T::Boolean) } + def reverse?; end + + sig { returns(T.nilable(String)) } + def revision; end + + sig { returns(T.nilable(String)) } + def root_url; end + + sig { returns(T.nilable(String)) } + def root_url_using; end + + sig { returns(T::Boolean) } + def ruby?; end + + sig { returns(T::Boolean) } + def rust?; end + + sig { returns(T::Boolean) } + def s?; end + + sig { returns(T.nilable(String)) } + def screen_saverdir; end + + sig { returns(T::Boolean) } + def search?; end + + sig { returns(T.nilable(String)) } + def seed; end + + sig { returns(T.nilable(String)) } + def servicedir; end + + sig { returns(T.nilable(String)) } + def set_license; end + + sig { returns(T.nilable(String)) } + def set_name; end + + sig { returns(T.nilable(String)) } + def set_version; end + + sig { returns(T.nilable(String)) } + def sha256; end + + sig { returns(T.nilable(String)) } + def shell; end + + sig { returns(T.nilable(String)) } + def signing?; end + + sig { returns(T::Boolean) } + def silent?; end + + sig { returns(T::Boolean) } + def skip_cask_deps?; end + + sig { returns(T::Boolean) } + def skip_post_install?; end + + sig { returns(T::Boolean) } + def skip_recommended?; end + + sig { returns(T::Boolean) } + def skip_relocation?; end + + sig { returns(T::Boolean) } + def skip_style?; end + + sig { returns(T::Boolean) } + def stackprof?; end + + sig { returns(T.nilable(String)) } + def start_with; end + + sig { returns(T::Boolean) } + def stat?; end + + sig { returns(T.nilable(String)) } + def state_file; end + + sig { returns(T::Boolean) } + def strict?; end + + sig { returns(T::Boolean) } + def suggest_typed?; end + + sig { returns(T::Boolean) } + def syntax?; end + + sig { returns(T::Boolean) } + def t?; end + + sig { returns(T.nilable(String)) } + def tag; end + + sig { returns(T.nilable(String)) } + def tap; end + + sig { returns(T::Boolean) } + def test?; end + + sig { returns(T.nilable(String)) } + def timeout; end + + sig { returns(T.nilable(String)) } + def to; end + + sig { returns(T::Boolean) } + def to_tag?; end + + sig { returns(T::Boolean) } + def token_conflicts?; end + + sig { returns(T::Boolean) } + def topological?; end + + sig { returns(T::Boolean) } + def total?; end + + sig { returns(T::Boolean) } + def tree?; end + + sig { returns(T::Boolean) } + def u?; end + + sig { returns(T::Boolean) } + def ubuntu?; end + + sig { returns(T::Boolean) } + def unbrewed?; end + + sig { returns(T::Boolean) } + def union?; end + + sig { returns(T.nilable(T::Array[String])) } + def update; end + + sig { returns(T::Boolean) } + def update?; end + + sig { returns(T::Boolean) } + def update_all?; end + + sig { returns(T::Boolean) } + def upload?; end + + sig { returns(T::Boolean) } + def upload_only?; end + + sig { returns(T.nilable(String)) } + def url; end + + 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 + + sig { returns(T.nilable(String)) } + def version_arm; end + + sig { returns(T.nilable(String)) } + def version_intel; end + + sig { returns(T::Boolean) } + def versions?; end + + sig { returns(T.nilable(String)) } + def vst3_plugindir; end + + sig { returns(T.nilable(String)) } + def vst_plugindir; end + + sig { returns(T::Boolean) } + def warn_on_upload_failure?; end + + sig { returns(T::Boolean) } + def with_hostname?; end + + sig { returns(T.nilable(String)) } + def with_label; end + + sig { returns(T::Boolean) } + def without_approval?; end + + sig { returns(T.nilable(T::Array[String])) } + def without_labels; end + + sig { returns(T.nilable(String)) } + def workflow; end + + sig { returns(T.nilable(T::Array[String])) } + def workflows; end + + sig { returns(T::Boolean) } + def write?; end + + sig { returns(T::Boolean) } + def write_only?; end + + sig { returns(T::Boolean) } + def zap?; end +end diff --git a/Library/Homebrew/sorbet/rbi/upstream.rbi b/Library/Homebrew/sorbet/rbi/upstream.rbi index 2aa21d6a36..a00487f95a 100644 --- a/Library/Homebrew/sorbet/rbi/upstream.rbi +++ b/Library/Homebrew/sorbet/rbi/upstream.rbi @@ -2,21 +2,3 @@ # This file contains temporary definitions for fixes that have # been submitted upstream to https://github.com/sorbet/sorbet. - -# https://github.com/sorbet/sorbet/pull/7650 -class Etc::Group < Struct - sig { returns(Integer) } - def gid; end - sig { returns(T::Array[String]) } - def mem; end - sig { returns(String) } - def name; end - sig { returns(String) } - def passwd; end -end - -# https://github.com/sorbet/sorbet/pull/7647 -module IRB - sig { params(ap_path: T.nilable(String), argv: T::Array[String]).void } - def self.setup(ap_path, argv: ::ARGV); end -end diff --git a/Library/Homebrew/sorbet/tapioca/compilers/args.rb b/Library/Homebrew/sorbet/tapioca/compilers/args.rb new file mode 100644 index 0000000000..1563e1d4f7 --- /dev/null +++ b/Library/Homebrew/sorbet/tapioca/compilers/args.rb @@ -0,0 +1,68 @@ +# typed: strict +# frozen_string_literal: true + +require_relative "../../../global" + +# require all the commands +["cmd", "dev-cmd"].each do |dir| + Dir[File.join(__dir__, "../../../#{dir}", "*.rb")].each { require(_1) } +end + +module Tapioca + module Compilers + class Args < Tapioca::Dsl::Compiler + # This is ugly, but we're moving to a new interface that will use a consistent DSL + # These are cmd/dev-cmd methods that end in `_args` but are not parsers + NON_PARSER_ARGS_METHODS = T.let([ + :formulae_all_installs_from_args, + :reproducible_gnutar_args, + :tar_args, + ].freeze, T::Array[Symbol]) + + # 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 = [Homebrew] + + sig { override.void } + def decorate + root.create_path(Homebrew::CLI::Args) do |klass| + Homebrew.methods(false).select { _1.end_with?("_args") }.each do |args_method_name| + next if NON_PARSER_ARGS_METHODS.include?(args_method_name) + + parser = Homebrew.method(args_method_name).call + comma_array_methods = comma_arrays(parser) + args = parser.instance_variable_get(:@args) + args.instance_variable_get(:@table).each do |method_name, value| + # 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 } || value == [] + + return_type = get_return_type(method_name, value, comma_array_methods) + klass.create_method(method_name, return_type:) + end + end + end + end + + sig { params(method_name: Symbol, value: T.untyped, comma_array_methods: T::Array[Symbol]).returns(String) } + def get_return_type(method_name, value, comma_array_methods) + if comma_array_methods.include?(method_name) + "T.nilable(T::Array[String])" + elsif [true, false].include?(value) + "T::Boolean" + else + "T.nilable(String)" + end + end + + sig { params(parser: Homebrew::CLI::Parser).returns(T::Array[Symbol]) } + def comma_arrays(parser) + parser.instance_variable_get(:@non_global_processed_options) + .filter_map { |k, v| parser.option_to_name(k).to_sym if v == :comma_array } + end + end + end +end