Address review feedback: fix description, use if/else, enable quarantine, improve fetch efficiency, and use local test cask

Co-authored-by: MikeMcQuaid <125011+MikeMcQuaid@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-09-01 10:56:00 +00:00 committed by Bevan Kay
parent 45a2ef9159
commit ac6f770cdc
No known key found for this signature in database
GPG Key ID: C55CB024B5314B57
2 changed files with 21 additions and 10 deletions

View File

@ -15,7 +15,7 @@ module Homebrew
cmd_args do cmd_args do
description <<~EOS description <<~EOS
Unpack the source files for <formula> and binaries for <cask> into subdirectories of the current Unpack the files for the <formula> or <cask> into subdirectories of the current
working directory. working directory.
EOS EOS
flag "--destdir=", flag "--destdir=",
@ -42,9 +42,9 @@ module Homebrew
sig { override.void } sig { override.void }
def run def run
formulae_and_casks = if args.cask? formulae_and_casks = if args.casks?
args.named.to_formulae_and_casks(only: :cask) args.named.to_formulae_and_casks(only: :cask)
elsif args.formula? elsif args.formulae?
args.named.to_formulae_and_casks(only: :formula) args.named.to_formulae_and_casks(only: :formula)
else else
args.named.to_formulae_and_casks args.named.to_formulae_and_casks
@ -60,10 +60,9 @@ module Homebrew
odie "Cannot write to #{unpack_dir}" unless unpack_dir.writable? odie "Cannot write to #{unpack_dir}" unless unpack_dir.writable?
formulae_and_casks.each do |formula_or_cask| formulae_and_casks.each do |formula_or_cask|
case formula_or_cask if formula_or_cask.is_a?(Formula)
when Formula
unpack_formula(formula_or_cask, unpack_dir) unpack_formula(formula_or_cask, unpack_dir)
when Cask::Cask else
unpack_cask(formula_or_cask, unpack_dir) unpack_cask(formula_or_cask, unpack_dir)
end end
end end
@ -113,9 +112,14 @@ module Homebrew
oh1 "Unpacking #{Formatter.identifier(cask.full_name)} to: #{stage_dir}" oh1 "Unpacking #{Formatter.identifier(cask.full_name)} to: #{stage_dir}"
# Download the cask download = Cask::Download.new(cask, quarantine: true)
download = Cask::Download.new(cask, quarantine: false)
# Check if already downloaded to avoid unnecessary fetch output
if download.downloaded?
downloaded_path = download.cached_download
else
downloaded_path = download.fetch(quiet: false) downloaded_path = download.fetch(quiet: false)
end
# Extract to destination # Extract to destination
stage_dir.mkpath stage_dir.mkpath

View File

@ -18,6 +18,13 @@ RSpec.describe Homebrew::DevCmd::Unpack do
end end
it "unpacks a given Cask's archive", :integration_test do it "unpacks a given Cask's archive", :integration_test do
skip "Cask unpacking requires network access to download files" caffeine_cask = Cask::CaskLoader.load("local-caffeine")
mktmpdir do |path|
expect { brew "unpack", "local-caffeine", "--destdir=#{path}" }
.to be_a_success
expect(path/"local-caffeine-#{caffeine_cask.version}").to be_a_directory
end
end end
end end