class Wright::Provider::Package::Homebrew

Homebrew package provider. Used as a provider for {Resource::Package} on OS X systems.

Public Instance Methods

installed_versions() click to toggle source

@return [Array<String>] the installed package versions

# File lib/wright/provider/package/homebrew.rb, line 14
def installed_versions
  cmd = 'brew'
  args = ['info', '--json=v1', package_name]
  cmd_stdout, _, cmd_status = Wright::Util.bundler_clean_env do
    Open3.capture3(env, cmd, *args)
  end

  if cmd_status.success?
    JSON[cmd_stdout].first['installed'].map { |v| v['version'] }
  else
    []
  end
end

Private Instance Methods

brew(action, package, version = nil) click to toggle source
# File lib/wright/provider/package/homebrew.rb, line 38
def brew(action, package, version = nil)
  ignore_version(version)

  Wright::Util.bundler_clean_env do
    error_message = "cannot #{action} package '#{package}'"
    args = [action.to_s, *package_options, package]
    exec_or_fail('brew', args, error_message)
  end
end
ignore_version(version) click to toggle source
# File lib/wright/provider/package/homebrew.rb, line 48
def ignore_version(version)
  return unless version
  package_info = "#{package_name} (#{version})"
  Wright.log.warn "ignoring package version: '#{package_info}'"
end
install_package() click to toggle source
# File lib/wright/provider/package/homebrew.rb, line 30
def install_package
  brew(:install, package_name, package_version)
end
remove_package() click to toggle source
# File lib/wright/provider/package/homebrew.rb, line 34
def remove_package
  brew(:uninstall, package_name)
end