Class: Homebrew::Bundle::Cask Private
- Inherits:
-
PackageType
- Object
- Homebrew::Bundle::Checker::Base
- PackageType
- Homebrew::Bundle::Cask
- Extended by:
- Utils::Output::Mixin
- Defined in:
- bundle/cask.rb
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Constant Summary collapse
- PACKAGE_TYPE =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
:cask- PACKAGE_TYPE_NAME =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
"Cask"
Class Method Summary collapse
- .cask_in_array?(cask, array) ⇒ Boolean private
- .cask_installed?(cask) ⇒ Boolean private
- .cask_installed_and_up_to_date?(cask, no_upgrade: false) ⇒ Boolean private
- .cask_is_outdated_using_greedy?(cask_name) ⇒ Boolean private
- .cask_names ⇒ Object private
- .cask_oldnames ⇒ Object private
- .cask_upgradable?(cask) ⇒ Boolean private
- .dump(describe: false) ⇒ Object private
- .dump_output(describe: false, no_restart: false) ⇒ Object private
- .fetchable_name(name, options = {}, no_upgrade: false) ⇒ Object private
- .formula_dependencies(cask_list) ⇒ Object private
- .install!(name, preinstall: true, no_upgrade: false, verbose: false, force: false, **options) ⇒ Object private
- .install_verb(name, options = {}) ⇒ Object private
- .installable_or_upgradable?(name, no_upgrade: false, **options) ⇒ Boolean private
- .installed_casks ⇒ Object private
- .outdated_cask_names ⇒ Object private
- .outdated_casks ⇒ Object private
- .preinstall!(name, no_upgrade: false, verbose: false, **options) ⇒ Object private
- .reset! ⇒ Object private
Instance Method Summary collapse
Methods included from Utils::Output::Mixin
odebug, odeprecated, odie, odisabled, ofail, oh1, oh1_title, ohai, ohai_title, onoe, opoo, opoo_outside_github_actions, pretty_deprecated, pretty_disabled, pretty_duration, pretty_installed, pretty_outdated, pretty_uninstalled
Methods inherited from PackageType
check, check_supported?, dump_supported?, inherited, install_supported?, type
Methods inherited from Homebrew::Bundle::Checker::Base
#checkable_entries, #exit_early_check, #failure_reason, #find_actionable, #format_checkable, #full_check
Class Method Details
.cask_in_array?(cask, array) ⇒ 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.
143 144 145 146 147 |
# File 'bundle/cask.rb', line 143 def cask_in_array?(cask, array) return true if array.include?(cask) array.include?(cask.split("/").last) end |
.cask_installed?(cask) ⇒ 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.
149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'bundle/cask.rb', line 149 def cask_installed?(cask) return true if cask_in_array?(cask, installed_casks) old_name = cask_oldnames[cask] old_name ||= cask_oldnames[cask.split("/").last] return false unless old_name return false unless cask_in_array?(old_name, installed_casks) opoo "#{cask} was renamed to #{old_name}" true end |
.cask_installed_and_up_to_date?(cask, no_upgrade: 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.
136 137 138 139 140 141 |
# File 'bundle/cask.rb', line 136 def cask_installed_and_up_to_date?(cask, no_upgrade: false) return false unless cask_installed?(cask) return true if no_upgrade !cask_upgradable?(cask) end |
.cask_is_outdated_using_greedy?(cask_name) ⇒ 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.
185 186 187 188 189 190 191 192 |
# File 'bundle/cask.rb', line 185 def cask_is_outdated_using_greedy?(cask_name) return false unless Bundle.cask_installed? cask = casks.find { |installed_cask| installed_cask.to_s == cask_name } return false if cask.nil? cask.outdated?(greedy: true) end |
.cask_names ⇒ Object
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.
174 175 176 |
# File 'bundle/cask.rb', line 174 def cask_names @cask_names ||= casks.map(&:to_s) end |
.cask_oldnames ⇒ Object
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.
208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# File 'bundle/cask.rb', line 208 def cask_oldnames @cask_oldnames ||= casks.each_with_object({}) do |c, hash| oldnames = c.old_tokens next if oldnames.blank? oldnames.each do |oldname| hash[oldname] = c.full_name if c.full_name.include? "/" # tap cask tap_name = c.full_name.rpartition("/").first hash["#{tap_name}/#{oldname}"] = c.full_name end end end end |
.cask_upgradable?(cask) ⇒ 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.
162 163 164 |
# File 'bundle/cask.rb', line 162 def cask_upgradable?(cask) cask_in_array?(cask, outdated_casks) end |
.dump(describe: false) ⇒ Object
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.
194 195 196 197 198 199 200 |
# File 'bundle/cask.rb', line 194 def dump(describe: false) casks.map do |cask| description = "# #{cask.desc}\n" if describe && cask.desc.present? config = ", args: { #{explicit_s(cask.config)} }" if cask.config.present? && cask.config.explicit.present? "#{description}cask \"#{cask.full_name}\"#{config}" end.join("\n") end |
.dump_output(describe: false, no_restart: false) ⇒ Object
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.
202 203 204 205 206 |
# File 'bundle/cask.rb', line 202 def dump_output(describe: false, no_restart: false) _ = no_restart dump(describe:) end |
.fetchable_name(name, options = {}, no_upgrade: false) ⇒ Object
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.
126 127 128 129 130 131 132 133 134 |
# File 'bundle/cask.rb', line 126 def fetchable_name(name, = {}, no_upgrade: false) full_name = T.cast(.fetch(:full_name, name), String) user, repository, = full_name.split("/", 3) return if user.present? && repository.present? && Homebrew::Bundle::Tap.installed_taps.exclude?("#{user}/#{repository}") return unless installable_or_upgradable?(name, no_upgrade:, **) full_name end |
.formula_dependencies(cask_list) ⇒ Object
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.
223 224 225 226 227 228 229 230 231 232 |
# File 'bundle/cask.rb', line 223 def formula_dependencies(cask_list) return [] unless Bundle.cask_installed? return [] if cask_list.blank? casks.flat_map do |cask| next unless cask_list.include?(cask.to_s) cask.depends_on[:formula] end.compact end |
.install!(name, preinstall: true, no_upgrade: false, verbose: false, force: false, **options) ⇒ Object
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.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'bundle/cask.rb', line 77 def install!(name, preinstall: true, no_upgrade: false, verbose: false, force: false, **) return true unless preinstall full_name = .fetch(:full_name, name) install_result = if cask_installed?(name) && upgrading?(no_upgrade, name, ) status = "#{[:greedy] ? "may not be" : "not"} up-to-date" puts "Upgrading #{name} cask. It is installed but #{status}." if verbose Bundle.brew("upgrade", "--cask", full_name, verbose:) else args = .fetch(:args, []).filter_map do |k, v| case v when TrueClass "--#{k}" when FalseClass, NilClass nil else "--#{k}=#{v}" end end args << "--force" if force args << "--adopt" unless args.include?("--force") args.uniq! with_args = " with #{args.join(" ")}" if args.present? puts "Installing #{name} cask#{with_args}. It is not currently installed." if verbose if Bundle.brew("install", "--cask", full_name, *args, verbose:) installed_casks << name true else false end end result = install_result if cask_installed?(name) postinstall_result = postinstall_change_state!(name:, options:, verbose:) result &&= postinstall_result end result end |
.install_verb(name, options = {}) ⇒ Object
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.
62 63 64 65 66 |
# File 'bundle/cask.rb', line 62 def install_verb(name, = {}) return "Installing" if !cask_installed?(name) || !upgrading?(false, name, ) "Upgrading" end |
.installable_or_upgradable?(name, no_upgrade: false, **options) ⇒ 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.
122 123 124 |
# File 'bundle/cask.rb', line 122 def installable_or_upgradable?(name, no_upgrade: false, **) !cask_installed?(name) || upgrading?(no_upgrade, name, ) end |
.installed_casks ⇒ Object
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.
166 167 168 |
# File 'bundle/cask.rb', line 166 def installed_casks @installed_casks ||= cask_names end |
.outdated_cask_names ⇒ Object
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.
178 179 180 181 182 183 |
# File 'bundle/cask.rb', line 178 def outdated_cask_names return [] unless Bundle.cask_installed? casks.select { |c| c.outdated?(greedy: false) } .map(&:to_s) end |
.outdated_casks ⇒ Object
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.
170 171 172 |
# File 'bundle/cask.rb', line 170 def outdated_casks @outdated_casks ||= outdated_cask_names end |
.preinstall!(name, no_upgrade: false, verbose: false, **options) ⇒ Object
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.
68 69 70 71 72 73 74 75 |
# File 'bundle/cask.rb', line 68 def preinstall!(name, no_upgrade: false, verbose: false, **) if cask_installed?(name) && !upgrading?(no_upgrade, name, ) puts "Skipping install of #{name} cask. It is already installed." if verbose return false end true end |
.reset! ⇒ Object
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.
16 17 18 19 20 21 22 |
# File 'bundle/cask.rb', line 16 def reset! @casks = nil @cask_names = nil @cask_oldnames = nil @installed_casks = nil @outdated_casks = nil end |
Instance Method Details
#installed_and_up_to_date?(cask, no_upgrade: 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.
235 236 237 |
# File 'bundle/cask.rb', line 235 def installed_and_up_to_date?(cask, no_upgrade: false) self.class.cask_installed_and_up_to_date?(cask, no_upgrade:) end |