aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/command.rb
blob: bab0257c8344c5828598f4098ef7be376964384e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#:  * `command` <cmd>:
#:    Display the path to the file which is used when invoking `brew` <cmd>.

module Homebrew
  def command
    abort "This command requires a command argument" if ARGV.empty?
    cmd = ARGV.first
    cmd = HOMEBREW_INTERNAL_COMMAND_ALIASES.fetch(cmd, cmd)

    if (path = internal_command_path cmd)
      puts path
    elsif (path = which("brew-#{cmd}") || which("brew-#{cmd}.rb"))
      puts path
    else
      odie "Unknown command: #{cmd}"
    end
  end

  private

  def internal_command_path(cmd)
    extensions = %w[rb sh]
    paths = extensions.map { |ext| HOMEBREW_LIBRARY_PATH/"cmd/#{cmd}.#{ext}" }
    paths += extensions.map { |ext| HOMEBREW_LIBRARY_PATH/"dev-cmd/#{cmd}.#{ext}" }
    paths.find { |p| p.file? }
  end
end