From 3bbffdd1d72d9135a67bc49fee6b041bd3994b95 Mon Sep 17 00:00:00 2001 From: William Ma Date: Mon, 20 Jul 2020 13:18:09 -0400 Subject: [PATCH] commands: Print cask commands --- Library/Homebrew/cask/cmd.rb | 4 +++ Library/Homebrew/cmd/commands.rb | 13 ++++++++-- Library/Homebrew/commands.rb | 43 +++++++++++++++++++++++++++++++- Library/Homebrew/keg.rb | 1 + 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/cask/cmd.rb b/Library/Homebrew/cask/cmd.rb index 139e063887..dc1c58e48c 100644 --- a/Library/Homebrew/cask/cmd.rb +++ b/Library/Homebrew/cask/cmd.rb @@ -88,6 +88,10 @@ module Cask @lookup.fetch(command_name, nil) end + def self.aliases + ALIASES + end + def self.run(*args) new(*args).run end diff --git a/Library/Homebrew/cmd/commands.rb b/Library/Homebrew/cmd/commands.rb index 7dcc7509cd..5741a8b34a 100644 --- a/Library/Homebrew/cmd/commands.rb +++ b/Library/Homebrew/cmd/commands.rb @@ -36,9 +36,18 @@ module Homebrew ohai "Built-in developer commands", Formatter.columns(Commands.internal_developer_commands) external_commands = Commands.external_commands - return if external_commands.blank? + if external_commands.present? + puts + ohai "External commands", Formatter.columns(external_commands) + end puts - ohai "External commands", Formatter.columns(external_commands) + ohai "Cask commands", Formatter.columns(Commands.cask_internal_commands) + + cask_external_commands = Commands.cask_external_commands + if cask_external_commands.present? + puts + ohai "External cask commands", Formatter.columns(cask_external_commands) + end end end diff --git a/Library/Homebrew/commands.rb b/Library/Homebrew/commands.rb index 02fc3d5e05..4a9b00d1b2 100644 --- a/Library/Homebrew/commands.rb +++ b/Library/Homebrew/commands.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'cask/cmd' + module Commands module_function @@ -89,6 +91,7 @@ module Commands cmds += internal_developer_commands cmds += external_commands cmds += internal_commands_aliases if aliases + cmds += cask_commands(aliases: aliases).map { |cmd| "cask #{cmd}" } cmds.sort end @@ -129,11 +132,49 @@ module Commands Tap.cmd_directories.flat_map do |path| find_commands(path).select(&:executable?) .map(&method(:basename_without_extension)) - .map { |p| p.to_s.sub(/^brew(cask)?-/, '\1 ').strip } + .map { |p| p.to_s.delete_prefix("brew-").strip } end.map(&:to_s) .sort end + def cask_commands(aliases: false) + cmds = cask_internal_commands + cmds += cask_internal_command_aliases if aliases + cmds += cask_unstable_internal_commands + cmds += cask_external_commands + cmds + end + + def cask_internal_commands + Cask::Cmd.commands - cask_unstable_internal_commands + end + + def cask_unstable_internal_commands + Cask::Cmd.commands.select do |command| + command.start_with? "_" + end + end + + def cask_internal_command_aliases + Cask::Cmd.aliases.keys + end + + def cask_external_commands + tap_cmd_directories = Tap.cmd_directories + path = PATH.new(tap_cmd_directories, ENV["HOMEBREW_PATH"]) + + path.flat_map do |search_path| + find_commands(search_path).map do |possible_command| + p = possible_command.to_path + command_name = p.match(/brewcask-(.*)\.rb/) { |data| data[1].delete_suffix(".rb") } + if command_name.blank? && possible_command.executable? + command_name = p.match(/brewcask-(.*)/) { |data| data[1] } + end + command_name + end.compact + end + end + def basename_without_extension(path) path.basename(path.extname) end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index c56c939bf7..ccf250e6df 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -4,6 +4,7 @@ require "keg_relocate" require "language/python" require "lock_file" require "ostruct" +require "extend/cachable" class Keg extend Cachable