commands: Print cask commands

This commit is contained in:
William Ma 2020-07-20 13:18:09 -04:00
parent 84e4e1b449
commit 3bbffdd1d7
4 changed files with 58 additions and 3 deletions

View File

@ -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

View File

@ -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 "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

View File

@ -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

View File

@ -4,6 +4,7 @@ require "keg_relocate"
require "language/python"
require "lock_file"
require "ostruct"
require "extend/cachable"
class Keg
extend Cachable