brew/Library/Homebrew/bundle/installer.rb
Issy Long 990c1efc16
bundle: Rename "brews" to "formulae" for consistency
- Homebrew Bundle referred to formulae as "brews". But it referred to
  casks as "casks" and taps as "taps".
- Let's use the same terminology everywhere.
- (I know that `brew "hello"` is the formula syntax in the Brewfile, so
  I'm not changing that (though would be up for it, in a backwards
  compatible manner), just making the code more consistent.)
2025-07-04 21:08:37 +01:00

85 lines
2.6 KiB
Ruby

# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
require "bundle/dsl"
require "bundle/formula_installer"
require "bundle/cask_installer"
require "bundle/mac_app_store_installer"
require "bundle/whalebrew_installer"
require "bundle/vscode_extension_installer"
require "bundle/tap_installer"
require "bundle/skipper"
module Homebrew
module Bundle
module Installer
def self.install(entries, global: false, file: nil, no_lock: false, no_upgrade: false, verbose: false,
force: false, quiet: false)
success = 0
failure = 0
entries.each do |entry|
name = entry.name
args = [name]
options = {}
verb = "Installing"
type = entry.type
cls = case type
when :brew
options = entry.options
verb = "Upgrading" if Homebrew::Bundle::FormulaInstaller.formula_upgradable?(name)
Homebrew::Bundle::FormulaInstaller
when :cask
options = entry.options
verb = "Upgrading" if Homebrew::Bundle::CaskInstaller.cask_upgradable?(name)
Homebrew::Bundle::CaskInstaller
when :mas
args << entry.options[:id]
Homebrew::Bundle::MacAppStoreInstaller
when :whalebrew
Homebrew::Bundle::WhalebrewInstaller
when :vscode
Homebrew::Bundle::VscodeExtensionInstaller
when :tap
verb = "Tapping"
options = entry.options
Homebrew::Bundle::TapInstaller
end
next if cls.nil?
next if Homebrew::Bundle::Skipper.skip? entry
preinstall = if cls.preinstall(*args, **options, no_upgrade:, verbose:)
puts Formatter.success("#{verb} #{name}")
true
else
puts "Using #{name}" unless quiet
false
end
if cls.install(*args, **options,
preinstall:, no_upgrade:, verbose:, force:)
success += 1
else
$stderr.puts Formatter.error("#{verb} #{name} has failed!")
failure += 1
end
end
unless failure.zero?
dependency = Homebrew::Bundle::Dsl.pluralize_dependency(failure)
$stderr.puts Formatter.error "`brew bundle` failed! #{failure} Brewfile #{dependency} failed to install"
return false
end
unless quiet
dependency = Homebrew::Bundle::Dsl.pluralize_dependency(success)
puts Formatter.success "`brew bundle` complete! #{success} Brewfile #{dependency} now installed."
end
true
end
end
end
end