Merge pull request #17726 from Homebrew/brew-repository-speedup
This commit is contained in:
commit
2d26c89e81
@ -1,32 +0,0 @@
|
|||||||
# typed: strict
|
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require "abstract_command"
|
|
||||||
|
|
||||||
module Homebrew
|
|
||||||
module Cmd
|
|
||||||
class Repository < AbstractCommand
|
|
||||||
sig { override.returns(String) }
|
|
||||||
def self.command_name = "--repository"
|
|
||||||
|
|
||||||
cmd_args do
|
|
||||||
description <<~EOS
|
|
||||||
Display where Homebrew's Git repository is located.
|
|
||||||
|
|
||||||
If <user>`/`<repo> are provided, display where tap <user>`/`<repo>'s directory is located.
|
|
||||||
EOS
|
|
||||||
|
|
||||||
named_args :tap
|
|
||||||
end
|
|
||||||
|
|
||||||
sig { override.void }
|
|
||||||
def run
|
|
||||||
if args.no_named?
|
|
||||||
puts HOMEBREW_REPOSITORY
|
|
||||||
else
|
|
||||||
puts args.named.to_taps.map(&:path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
44
Library/Homebrew/cmd/--repository.sh
Normal file
44
Library/Homebrew/cmd/--repository.sh
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#: * `--repository`, `--repo` [<tap> ...]
|
||||||
|
#:
|
||||||
|
#: Display where Homebrew's Git repository is located.
|
||||||
|
#:
|
||||||
|
#: If <user>`/`<repo> are provided, display where tap <user>`/`<repo>'s directory is located.
|
||||||
|
|
||||||
|
# HOMEBREW_REPOSITORY, HOMEBREW_LIBRARY are set by brew.sh
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
|
||||||
|
tap_path() {
|
||||||
|
local tap="$1"
|
||||||
|
local user
|
||||||
|
local repo
|
||||||
|
local part
|
||||||
|
|
||||||
|
user="$(echo "${tap%%/*}" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
repo="$(echo "${tap#*/}" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
|
||||||
|
for part in "${user}" "${repo}"
|
||||||
|
do
|
||||||
|
if [[ -z "${part}" || "${part}" == *"/"* ]]
|
||||||
|
then
|
||||||
|
odie "Invalid tap name: ${tap}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
repo="${repo#(home|linux)brew-}"
|
||||||
|
echo "${HOMEBREW_LIBRARY}/Taps/${user}/homebrew-${repo}"
|
||||||
|
}
|
||||||
|
|
||||||
|
homebrew---repository() {
|
||||||
|
local tap
|
||||||
|
|
||||||
|
if [[ "$#" -eq 0 ]]
|
||||||
|
then
|
||||||
|
echo "${HOMEBREW_REPOSITORY}"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tap in "$@"
|
||||||
|
do
|
||||||
|
tap_path "${tap}"
|
||||||
|
done
|
||||||
|
}
|
@ -1,11 +1,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "cmd/--repository"
|
RSpec.describe "brew --repository", type: :system do
|
||||||
require "cmd/shared_examples/args_parse"
|
|
||||||
|
|
||||||
RSpec.describe Homebrew::Cmd::Repository do
|
|
||||||
it_behaves_like "parseable arguments"
|
|
||||||
|
|
||||||
it "prints Homebrew's repository", :integration_test do
|
it "prints Homebrew's repository", :integration_test do
|
||||||
expect { brew_sh "--repository" }
|
expect { brew_sh "--repository" }
|
||||||
.to output("#{ENV.fetch("HOMEBREW_REPOSITORY")}\n").to_stdout
|
.to output("#{ENV.fetch("HOMEBREW_REPOSITORY")}\n").to_stdout
|
||||||
@ -14,8 +9,8 @@ RSpec.describe Homebrew::Cmd::Repository do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "prints a Tap's repository", :integration_test do
|
it "prints a Tap's repository", :integration_test do
|
||||||
expect { brew "--repository", "foo/bar" }
|
expect { brew_sh "--repository", "foo/bar" }
|
||||||
.to output("#{HOMEBREW_LIBRARY}/Taps/foo/homebrew-bar\n").to_stdout
|
.to output("#{ENV.fetch("HOMEBREW_LIBRARY")}/Taps/foo/homebrew-bar\n").to_stdout
|
||||||
.and not_to_output.to_stderr
|
.and not_to_output.to_stderr
|
||||||
.and be_a_success
|
.and be_a_success
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user