Skip to content

Commit

Permalink
feat: Install an unlinked formula via brew install if --overwrite
Browse files Browse the repository at this point in the history
… is passed

If the intention is to overwrite any existing links, then `brew install` should go on to install over an unlinked formula
  • Loading branch information
boblail committed Oct 12, 2024
1 parent 3291ad4 commit 3620436
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 17 deletions.
1 change: 1 addition & 0 deletions Library/Homebrew/cmd/install.rb
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ def run
only_dependencies: args.only_dependencies?,
force: args.force?,
quiet: args.quiet?,
overwrite: args.overwrite?,
)
end

Expand Down
5 changes: 3 additions & 2 deletions Library/Homebrew/install.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ def install_formula?(
fetch_head: false,
only_dependencies: false,
force: false,
quiet: false
quiet: false,
overwrite: false
)
# head-only without --HEAD is an error
if !head && formula.stable.nil?
Expand Down Expand Up @@ -132,7 +133,7 @@ def install_formula?(
The currently linked version is: #{formula.linked_version}
EOS
end
elsif only_dependencies
elsif only_dependencies || (!formula.linked? && overwrite)
msg = nil
return true
elsif !formula.linked? || formula.keg_only?
Expand Down
18 changes: 3 additions & 15 deletions Library/Homebrew/test/cmd/install_spec.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# typed: false
# frozen_string_literal: true

require "cmd/install"
require "cmd/shared_examples/args_parse"

RSpec.describe Homebrew::Cmd::InstallCmd do
describe "brew install" do
it_behaves_like "parseable arguments"

it "installs formulae", :integration_test do
Expand Down Expand Up @@ -45,7 +45,7 @@
repo_path.join("bin").mkpath

repo_path.cd do
system "git", "-c", "init.defaultBranch=master", "init"
system "git", "init"
system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-foo"
FileUtils.touch "bin/something.bin"
FileUtils.touch "README"
Expand All @@ -72,16 +72,4 @@ def install
.and be_a_success
expect(HOMEBREW_CELLAR/"testball1/HEAD-d5eb689/foo/test").not_to be_a_file
end

it "installs formulae with debug symbols", :integration_test do
setup_test_formula "testball1"

expect { brew "install", "testball1", "--debug-symbols", "--build-from-source" }
.to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout
.and not_to_output.to_stderr
.and be_a_success
expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file
expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM/Contents/Resources/DWARF/test").to be_a_file if OS.mac?
expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory
end
end

0 comments on commit 3620436

Please sign in to comment.