class Homebrew

Manages Homebrew - the premier package manager for Mac OS

Constants

INSTALL_SCRIPT
TEARDOWN_SCRIPT

Public Instance Methods

clean() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 18
def clean
  execute 'Clean Up', 'brew cleanup'
end
down() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 22
def down
  execute 'Teardown', "\\curl -L #{TEARDOWN_SCRIPT} | bash -s"
end
up() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 12
def up
  install_homebrew
  install_missing_brews
  update_existing_brews
end

Private Instance Methods

each_brew_to_install() { |name, options| ... } click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 53
def each_brew_to_install
  brews.each do |brew|
    if brew.class == String
      name = brew
      options = []
    else
      name = brew.keys.first
      options = brew[name]
    end

    yield name, options unless installed_brews.include? name
  end
end
install_homebrew() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 28
def install_homebrew
  if command_exists? 'brew'
    skip_task 'Install Homebrew'
  else
    execute_interactive 'Install Homebrew', "ruby -e \"$(curl -fsSL #{INSTALL_SCRIPT})\""
  end
end
install_missing_brews() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 36
def install_missing_brews
  each_brew_to_install do |brew, options|
    install_package brew, options
  end
end
install_package(name, options) click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 75
def install_package(name, options)
  execute "Installing #{name}", "brew install #{name} #{options.join}"
end
installed_brews() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 67
def installed_brews
  @installed_brews ||= silent_execute('brew ls').split(/\s/)
end
outdated_brews() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 71
def outdated_brews
  @outdated_brews ||= silent_execute('brew outdated').split(/\s/)
end
update_existing_brews() click to toggle source
# File lib/exogenesis/passengers/homebrew.rb, line 42
def update_existing_brews
  execute 'Updating Homebrew', 'brew update'

  if outdated_brews.length == 0
    skip_task 'Upgrade Brews'
  else
    info 'Outdated Brews', outdated_brews.join(', ')
    execute 'Upgrade Brews', 'brew upgrade'
  end
end