2013-01-01 17:26:50 +00:00
|
|
|
class Caveats
|
2013-01-12 13:08:29 -06:00
|
|
|
attr_reader :f
|
2013-01-01 17:26:50 +00:00
|
|
|
|
2013-01-12 13:08:29 -06:00
|
|
|
def initialize(f)
|
|
|
|
@f = f
|
|
|
|
end
|
|
|
|
|
|
|
|
def caveats
|
|
|
|
caveats = []
|
2014-01-04 13:18:27 +00:00
|
|
|
caveats << f.caveats if f.caveats.to_s.length > 0
|
2013-06-09 15:31:40 -05:00
|
|
|
caveats << f.keg_only_text if f.keg_only? && f.respond_to?(:keg_only_text)
|
2013-01-12 13:08:29 -06:00
|
|
|
caveats << bash_completion_caveats
|
|
|
|
caveats << zsh_completion_caveats
|
|
|
|
caveats << plist_caveats
|
2014-01-04 13:18:27 +00:00
|
|
|
caveats << python_caveats
|
2014-01-18 21:58:01 +00:00
|
|
|
caveats << app_caveats
|
2013-01-12 13:08:29 -06:00
|
|
|
caveats.compact.join("\n")
|
|
|
|
end
|
|
|
|
|
|
|
|
def empty?
|
|
|
|
caveats.empty?
|
|
|
|
end
|
2013-01-01 17:26:50 +00:00
|
|
|
|
2013-01-12 13:08:29 -06:00
|
|
|
private
|
2013-01-01 17:26:50 +00:00
|
|
|
|
2013-01-12 13:08:29 -06:00
|
|
|
def keg
|
|
|
|
@keg ||= [f.prefix, f.opt_prefix, f.linked_keg].map do |d|
|
|
|
|
Keg.new(d.realpath) rescue nil
|
|
|
|
end.compact.first
|
|
|
|
end
|
|
|
|
|
|
|
|
def bash_completion_caveats
|
|
|
|
if keg and keg.completion_installed? :bash then <<-EOS.undent
|
|
|
|
Bash completion has been installed to:
|
|
|
|
#{HOMEBREW_PREFIX}/etc/bash_completion.d
|
|
|
|
EOS
|
2013-01-01 17:26:50 +00:00
|
|
|
end
|
2013-01-12 13:08:29 -06:00
|
|
|
end
|
2013-01-01 17:26:50 +00:00
|
|
|
|
2013-01-12 13:08:29 -06:00
|
|
|
def zsh_completion_caveats
|
|
|
|
if keg and keg.completion_installed? :zsh then <<-EOS.undent
|
|
|
|
zsh completion has been installed to:
|
|
|
|
#{HOMEBREW_PREFIX}/share/zsh/site-functions
|
|
|
|
EOS
|
2013-01-01 17:26:50 +00:00
|
|
|
end
|
2013-01-12 13:08:29 -06:00
|
|
|
end
|
2013-01-01 17:26:50 +00:00
|
|
|
|
2014-01-04 13:18:27 +00:00
|
|
|
def python_caveats
|
|
|
|
site_packages = if f.keg_only?
|
|
|
|
"#{f.opt_prefix}/lib/python2.7/site-packages"
|
|
|
|
else
|
|
|
|
"#{HOMEBREW_PREFIX}/lib/python2.7/site-packages"
|
|
|
|
end
|
|
|
|
if keg and keg.python_site_packages_installed? \
|
|
|
|
and !ENV['PYTHONPATH'].to_s.include? site_packages
|
|
|
|
<<-EOS.undent
|
2014-01-21 09:02:06 -08:00
|
|
|
Set PYTHONPATH if you need Python to find the installed site-packages:
|
2014-01-04 13:18:27 +00:00
|
|
|
export PYTHONPATH=#{site_packages}:$PYTHONPATH
|
|
|
|
EOS
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-01-18 21:58:01 +00:00
|
|
|
def app_caveats
|
|
|
|
if keg and keg.app_installed?
|
|
|
|
<<-EOS.undent
|
|
|
|
.app bundles were installed to #{f.prefix} (or libexec).
|
|
|
|
Run `brew linkapps` to symlink these to /Applications.
|
|
|
|
EOS
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-01-12 13:08:29 -06:00
|
|
|
def plist_caveats
|
|
|
|
s = []
|
2013-01-01 17:26:50 +00:00
|
|
|
if f.plist or (keg and keg.plist_installed?)
|
|
|
|
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"
|
2013-06-23 14:31:14 +01:00
|
|
|
s << "To reload #{f.name} after an upgrade:"
|
2013-01-01 17:26:50 +00:00
|
|
|
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
|
2013-02-06 22:27:33 -08:00
|
|
|
if f.plist_manual
|
|
|
|
s << "Or, if you don't want/need launchctl, you can just run:"
|
|
|
|
s << " #{f.plist_manual}"
|
|
|
|
end
|
2013-01-01 17:26:50 +00:00
|
|
|
end
|
2013-01-29 14:37:03 -08:00
|
|
|
s << '' << "WARNING: launchctl will fail when run under tmux." if ENV['TMUX']
|
2013-01-01 17:26:50 +00:00
|
|
|
end
|
2013-01-12 13:08:29 -06:00
|
|
|
s.join("\n") unless s.empty?
|
2013-01-01 17:26:50 +00:00
|
|
|
end
|
|
|
|
end
|