| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2014-03-08 12:56:15 +00:00
										 |  |  |     return unless keg | 
					
						
							|  |  |  |     return unless keg.python_site_packages_installed? | 
					
						
							|  |  |  |     return if Formula["python"].installed? | 
					
						
							| 
									
										
										
										
											2014-01-04 13:18:27 +00:00
										 |  |  |     site_packages = if f.keg_only? | 
					
						
							|  |  |  |       "#{f.opt_prefix}/lib/python2.7/site-packages" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       "#{HOMEBREW_PREFIX}/lib/python2.7/site-packages" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-03-08 12:56:15 +00:00
										 |  |  |     dir = "~/Library/Python/2.7/lib/python/site-packages" | 
					
						
							|  |  |  |     dir_path = Pathname.new(dir).expand_path | 
					
						
							|  |  |  |     file = "#{dir}/homebrew.pth" | 
					
						
							|  |  |  |     file_path = Pathname.new(file).expand_path | 
					
						
							|  |  |  |     if !file_path.readable? || !file_path.read.include?(site_packages) | 
					
						
							|  |  |  |       s = "If you need Python to find the installed site-packages:\n" | 
					
						
							|  |  |  |       s += "  mkdir -p #{dir}\n" unless dir_path.exist? | 
					
						
							|  |  |  |       s += "  echo '#{site_packages}' >> #{file}" | 
					
						
							| 
									
										
										
										
											2014-01-04 13:18:27 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-18 21:58:01 +00:00
										 |  |  |   def app_caveats | 
					
						
							|  |  |  |     if keg and keg.app_installed? | 
					
						
							|  |  |  |       <<-EOS.undent
 | 
					
						
							| 
									
										
										
										
											2014-02-02 10:11:48 +00:00
										 |  |  |         .app bundles were installed. | 
					
						
							| 
									
										
										
										
											2014-01-18 21:58:01 +00:00
										 |  |  |         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 |