From d23366ae9a39390a31f5c1a424209c8169cfa7cb Mon Sep 17 00:00:00 2001 From: Lorenzo Manacorda Date: Sun, 16 Dec 2012 20:46:45 +0100 Subject: [PATCH] Add launchctl_instructions method Closes Homebrew/homebrew#16604. Signed-off-by: Mike McQuaid --- Library/Homebrew/cmd/info.rb | 2 + Library/Homebrew/formula.rb | 58 +++++++++++++++++++++++++++ Library/Homebrew/formula_installer.rb | 55 +------------------------ 3 files changed, 61 insertions(+), 54 deletions(-) diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index a5da4e81d4..f35c004bba 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -124,6 +124,8 @@ module Homebrew extend self puts f.caveats end + f.launchctl_instructions + rescue FormulaUnavailableError # check for DIY installation d = HOMEBREW_PREFIX+name diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 337916a0aa..76de2f5cef 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -115,6 +115,64 @@ class Formula end def rack; prefix.parent end + def launchctl_instructions + if plist or Keg.new(prefix).plist_installed? + destination = plist_startup ? '/Library/LaunchDaemons' \ + : '~/Library/LaunchAgents' + + plist_filename = plist_path.basename + plist_link = "#{destination}/#{plist_filename}" + plist_domain = plist_path.basename('.plist') + destination_path = Pathname.new File.expand_path destination + plist_path = destination_path/plist_filename + s = [] + + # 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 plist_startup + s << "To have launchd start #{name} at startup:" + s << " sudo mkdir -p #{destination}" unless destination_path.directory? + s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{name}/*.plist #{destination}" + else + s << "To have launchd start #{name} at login:" + s << " mkdir -p #{destination}" unless destination_path.directory? + s << " ln -sfv #{HOMEBREW_PREFIX}/opt/#{name}/*.plist #{destination}" + end + s << "Then to load #{name} now:" + if plist_startup + s << " sudo launchctl load #{plist_link}" + else + s << " launchctl load #{plist_link}" + end + if plist_manual + s << "Or, if you don't want/need launchctl, you can just run:" + s << " #{plist_manual}" + end + elsif Kernel.system "/bin/launchctl list #{plist_domain} &>/dev/null" + s << "You should reload #{name}:" + if plist_startup + s << " sudo launchctl unload #{plist_link}" + s << " sudo cp -fv #{HOMEBREW_PREFIX}/opt/#{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 #{name}:" + if plist_startup + s << " sudo launchctl load #{plist_link}" + else + s << " launchctl load #{plist_link}" + end + end + + ohai 'Caveats', s + + end + end + def bin; prefix+'bin' end def doc; share+'doc'+name end def include; prefix+'include' end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 2269104213..dd1450ec24 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -174,60 +174,7 @@ class FormulaInstaller EOS end - if f.plist or 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 - s = [] - - # 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 - - ohai 'Caveats', s - end + f.launchctl_instructions end def finish