Add caveats class and use in brew info.

Probably a better approach than reverted e721c7.

Fixes Homebrew/homebrew#16604.
This commit is contained in:
Mike McQuaid 2013-01-01 17:26:50 +00:00
parent da0c0ae97a
commit 755a2fbe52
3 changed files with 90 additions and 91 deletions

View File

@ -0,0 +1,85 @@
class Caveats
def self.print f
s = []
unless f.caveats.to_s.strip.empty?
s << f.caveats
end
keg = Keg.new(f.prefix) rescue nil
keg ||= Keg.new(f.opt_prefix.realpath) rescue nil
keg ||= Keg.new(f.linked_keg.realpath) rescue nil
if keg and keg.completion_installed? :bash
s << "\n" unless s.empty?
s << <<-EOS.undent
Bash completion has been installed to:
#{HOMEBREW_PREFIX}/etc/bash_completion.d
EOS
end
if keg and keg.completion_installed? :zsh
s << "\n" unless s.empty?
s << <<-EOS.undent
zsh completion has been installed to:
#{HOMEBREW_PREFIX}/share/zsh/site-functions
EOS
end
if f.plist or (keg and keg.plist_installed?)
s << "\n" unless s.empty?
destination = f.plist_startup ? '/Library/LaunchDaemons' \
: '~/Library/LaunchAgents'
plist_filename = f.plist_path.basename
plist_link = "#{destination}/#{plist_filename}"
plist_domain = f.plist_path.basename('.plist')
destination_path = Pathname.new File.expand_path destination
plist_path = destination_path/plist_filename
# we readlink because this path probably doesn't exist since caveats
# occurs before the link step of installation
if (not plist_path.file?) and (not plist_path.symlink?)
if f.plist_startup
s << "To have launchd start #{f.name} at startup:"
s << " sudo mkdir -p #{destination}" unless destination_path.directory?
s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
else
s << "To have launchd start #{f.name} at login:"
s << " mkdir -p #{destination}" unless destination_path.directory?
s << " ln -sfv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
end
s << "Then to load #{f.name} now:"
if f.plist_startup
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl load #{plist_link}"
end
if f.plist_manual
s << "Or, if you don't want/need launchctl, you can just run:"
s << " #{f.plist_manual}"
end
elsif Kernel.system "/bin/launchctl list #{plist_domain} &>/dev/null"
s << "You should reload #{f.name}:"
if f.plist_startup
s << " sudo launchctl unload #{plist_link}"
s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl unload #{plist_link}"
s << " launchctl load #{plist_link}"
end
else
s << "To load #{f.name}:"
if f.plist_startup
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl load #{plist_link}"
end
end
end
ohai 'Caveats', s unless s.empty?
end
end

View File

@ -1,6 +1,7 @@
require 'formula' require 'formula'
require 'tab' require 'tab'
require 'keg' require 'keg'
require 'caveats'
module Homebrew extend self module Homebrew extend self
def info def info
@ -119,10 +120,7 @@ module Homebrew extend self
Homebrew.dump_options_for_formula f Homebrew.dump_options_for_formula f
end end
unless f.caveats.to_s.strip.empty? Caveats.print f
ohai "Caveats"
puts f.caveats
end
rescue FormulaUnavailableError rescue FormulaUnavailableError
# check for DIY installation # check for DIY installation

View File

@ -3,6 +3,7 @@ require 'formula'
require 'keg' require 'keg'
require 'tab' require 'tab'
require 'bottles' require 'bottles'
require 'caveats'
class FormulaInstaller class FormulaInstaller
attr :f attr :f
@ -143,18 +144,7 @@ class FormulaInstaller
end end
def caveats def caveats
s = [] if (not f.keg_only?) and ARGV.homebrew_developer?
unless f.caveats.to_s.strip.empty?
s << f.caveats
@show_summary_heading = true
end
if f.keg_only?
s << "\n" unless s.empty?
s << f.keg_only_text
@show_summary_heading = true
elsif ARGV.homebrew_developer?
audit_bin audit_bin
audit_sbin audit_sbin
audit_lib audit_lib
@ -162,81 +152,7 @@ class FormulaInstaller
check_infopages check_infopages
end end
keg = Keg.new(f.prefix) rescue nil Caveats.print f
keg ||= Keg.new(f.opt_prefix.realpath) rescue nil
keg ||= Keg.new(f.linked_keg.realpath) rescue nil
if keg and keg.completion_installed? :bash
s << "\n" unless s.empty?
s << <<-EOS.undent
Bash completion has been installed to:
#{HOMEBREW_PREFIX}/etc/bash_completion.d
EOS
end
if keg and keg.completion_installed? :zsh
s << "\n" unless s.empty?
s << <<-EOS.undent
zsh completion has been installed to:
#{HOMEBREW_PREFIX}/share/zsh/site-functions
EOS
end
if f.plist or (keg and keg.plist_installed?)
s << "\n" unless s.empty?
destination = f.plist_startup ? '/Library/LaunchDaemons' \
: '~/Library/LaunchAgents'
plist_filename = f.plist_path.basename
plist_link = "#{destination}/#{plist_filename}"
plist_domain = f.plist_path.basename('.plist')
destination_path = Pathname.new File.expand_path destination
plist_path = destination_path/plist_filename
# we readlink because this path probably doesn't exist since caveats
# occurs before the link step of installation
if (not plist_path.file?) and (not plist_path.symlink?)
if f.plist_startup
s << "To have launchd start #{f.name} at startup:"
s << " sudo mkdir -p #{destination}" unless destination_path.directory?
s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
else
s << "To have launchd start #{f.name} at login:"
s << " mkdir -p #{destination}" unless destination_path.directory?
s << " ln -sfv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
end
s << "Then to load #{f.name} now:"
if f.plist_startup
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl load #{plist_link}"
end
if f.plist_manual
s << "Or, if you don't want/need launchctl, you can just run:"
s << " #{f.plist_manual}"
end
elsif Kernel.system "/bin/launchctl list #{plist_domain} &>/dev/null"
s << "You should reload #{f.name}:"
if f.plist_startup
s << " sudo launchctl unload #{plist_link}"
s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{f.name}/*.plist #{destination}"
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl unload #{plist_link}"
s << " launchctl load #{plist_link}"
end
else
s << "To load #{f.name}:"
if f.plist_startup
s << " sudo launchctl load #{plist_link}"
else
s << " launchctl load #{plist_link}"
end
end
end
ohai 'Caveats', s unless s.empty?
end end
def finish def finish