Add caveats class and use in brew info.
Probably a better approach than reverted e721c7. Fixes Homebrew/homebrew#16604.
This commit is contained in:
		
							parent
							
								
									da0c0ae97a
								
							
						
					
					
						commit
						755a2fbe52
					
				
							
								
								
									
										85
									
								
								Library/Homebrew/caveats.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								Library/Homebrew/caveats.rb
									
									
									
									
									
										Normal 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
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
require 'formula'
 | 
			
		||||
require 'tab'
 | 
			
		||||
require 'keg'
 | 
			
		||||
require 'caveats'
 | 
			
		||||
 | 
			
		||||
module Homebrew extend self
 | 
			
		||||
  def info
 | 
			
		||||
@ -119,10 +120,7 @@ module Homebrew extend self
 | 
			
		||||
      Homebrew.dump_options_for_formula f
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    unless f.caveats.to_s.strip.empty?
 | 
			
		||||
      ohai "Caveats"
 | 
			
		||||
      puts f.caveats
 | 
			
		||||
    end
 | 
			
		||||
    Caveats.print f
 | 
			
		||||
 | 
			
		||||
  rescue FormulaUnavailableError
 | 
			
		||||
    # check for DIY installation
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ require 'formula'
 | 
			
		||||
require 'keg'
 | 
			
		||||
require 'tab'
 | 
			
		||||
require 'bottles'
 | 
			
		||||
require 'caveats'
 | 
			
		||||
 | 
			
		||||
class FormulaInstaller
 | 
			
		||||
  attr :f
 | 
			
		||||
@ -143,18 +144,7 @@ class FormulaInstaller
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def caveats
 | 
			
		||||
    s = []
 | 
			
		||||
 | 
			
		||||
    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?
 | 
			
		||||
    if (not f.keg_only?) and ARGV.homebrew_developer?
 | 
			
		||||
      audit_bin
 | 
			
		||||
      audit_sbin
 | 
			
		||||
      audit_lib
 | 
			
		||||
@ -162,81 +152,7 @@ class FormulaInstaller
 | 
			
		||||
      check_infopages
 | 
			
		||||
    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?
 | 
			
		||||
    Caveats.print f
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def finish
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user