Module: Homebrew::Bundle::Installer Private
- Defined in:
- bundle/installer.rb
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Defined Under Namespace
Classes: InstallableEntry
Class Method Summary collapse
- .fetchable_formulae_and_casks(entries, no_upgrade:) ⇒ Array<String> private
- .install!(entries, global: false, file: nil, no_lock: false, no_upgrade: false, verbose: false, force: false, jobs: 1, quiet: false) ⇒ Boolean private
Class Method Details
.fetchable_formulae_and_casks(entries, no_upgrade:) ⇒ Array<String>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
98 99 100 101 102 |
# File 'bundle/installer.rb', line 98 def self.fetchable_formulae_and_casks(entries, no_upgrade:) entries.filter_map do |entry| entry.cls.fetchable_name(entry.name, entry., no_upgrade:) end end |
.install!(entries, global: false, file: nil, no_lock: false, no_upgrade: false, verbose: false, force: false, jobs: 1, quiet: false) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'bundle/installer.rb', line 31 def self.install!(entries, global: false, file: nil, no_lock: false, no_upgrade: false, verbose: false, force: false, jobs: 1, quiet: false) success = 0 failure = 0 installable_entries = entries.filter_map do |entry| next if Homebrew::Bundle::Skipper.skip? entry name = entry.name = entry. type = entry.type cls = Homebrew::Bundle.installable(type) next if cls.nil? || !cls.install_supported? InstallableEntry.new(name:, options:, verb: cls.install_verb(name, ), cls:) end if (fetchable_names = fetchable_formulae_and_casks(installable_entries, no_upgrade:).presence) fetchable_names_joined = fetchable_names.join(", ") puts Formatter.success("Fetching #{fetchable_names_joined}") unless quiet unless Bundle.brew("fetch", *fetchable_names, verbose:) $stderr.puts Formatter.error "`brew bundle` failed! Failed to fetch #{fetchable_names_joined}" return false end end if jobs > 1 && installable_entries.size > 1 require "bundle/parallel_installer" parallel = ParallelInstaller.new( installable_entries, jobs:, no_upgrade:, verbose:, force:, quiet: ) parallel_success, parallel_failure = parallel.run! success += parallel_success failure += parallel_failure else installable_entries.each do |entry| if install_entry!(entry, no_upgrade:, verbose:, force:, quiet:) success += 1 else failure += 1 end end end unless failure.zero? require "utils" dependency = Utils.pluralize("dependency", failure) $stderr.puts Formatter.error "`brew bundle` failed! #{failure} Brewfile #{dependency} failed to install" return false end unless quiet require "utils" dependency = Utils.pluralize("dependency", success) puts Formatter.success "`brew bundle` complete! #{success} Brewfile #{dependency} now installed." end true end |