Merge pull request #17726 from Homebrew/brew-repository-speedup

This commit is contained in:
Mike McQuaid 2024-07-14 12:57:52 -04:00 committed by GitHub
commit 2d26c89e81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 47 additions and 40 deletions

View File

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

View 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
}

View File

@ -1,11 +1,6 @@
# frozen_string_literal: true
require "cmd/--repository"
require "cmd/shared_examples/args_parse"
RSpec.describe Homebrew::Cmd::Repository do
it_behaves_like "parseable arguments"
RSpec.describe "brew --repository", type: :system do
it "prints Homebrew's repository", :integration_test do
expect { brew_sh "--repository" }
.to output("#{ENV.fetch("HOMEBREW_REPOSITORY")}\n").to_stdout
@ -14,8 +9,8 @@ RSpec.describe Homebrew::Cmd::Repository do
end
it "prints a Tap's repository", :integration_test do
expect { brew "--repository", "foo/bar" }
.to output("#{HOMEBREW_LIBRARY}/Taps/foo/homebrew-bar\n").to_stdout
expect { brew_sh "--repository", "foo/bar" }
.to output("#{ENV.fetch("HOMEBREW_LIBRARY")}/Taps/foo/homebrew-bar\n").to_stdout
.and not_to_output.to_stderr
.and be_a_success
end