Refactor Xcode/CLT version checks

This commit is contained in:
Jack Nagel 2013-05-22 22:26:09 -05:00
parent b2ff6e934b
commit 3755b33a97
3 changed files with 40 additions and 30 deletions

View File

@ -215,33 +215,38 @@ def check_for_broken_symlinks
end
end
def check_for_latest_xcode
if not MacOS::Xcode.installed?
if MacOS.version >= 10.7
if not MacOS::CLT.installed?
<<-EOS.undent
No developer tools installed
You should install the Command Line Tools: http://connect.apple.com
EOS
elsif not MacOS::CLT.latest_version?
<<-EOS.undent
A newer Command Line Tools for Xcode release is available
You should install the latest version from: http://connect.apple.com
EOS
end
else
<<-EOS.undent
def check_xcode_clt
if MacOS::Xcode.installed?
__check_xcode_up_to_date
elsif MacOS.version >= 10.7
__check_clt_up_to_date
else <<-EOS.undent
Xcode not installed
Most stuff needs Xcode to build: http://developer.apple.com/xcode/
EOS
end
elsif MacOS::Xcode.version < MacOS::Xcode.latest_version then <<-EOS.undent
end
def __check_xcode_up_to_date
if MacOS::Xcode.outdated? then <<-EOS.undent
Your Xcode (#{MacOS::Xcode.version}) is outdated
Please install Xcode #{MacOS::Xcode.latest_version}.
EOS
end
end
def __check_clt_up_to_date
if not MacOS::CLT.installed? then <<-EOS.undent
No developer tools installed
You should install the Command Line Tools: http://connect.apple.com
EOS
elsif MacOS::CLT.outdated? then <<-EOS.undent
A newer Command Line Tools for Xcode release is available
You should install the latest version from: http://connect.apple.com
EOS
end
end
def check_for_stray_developer_directory
# if the uninstaller script isn't there, it's a good guess neither are
# any troublesome leftover Xcode files
@ -271,7 +276,7 @@ def check_cc
end
def check_standard_compilers
return if check_for_latest_xcode # only check if Xcode is up to date
return if check_xcode_clt # only check if Xcode is up to date
compiler_status = MacOS.compilers_standard?
if not compiler_status and not compiler_status.nil? then <<-EOS.undent
Your compilers are different from the standard versions for your Xcode.

View File

@ -42,7 +42,7 @@ module Homebrew extend self
def check_xcode
require 'cmd/doctor'
checks = Checks.new
%w{check_for_latest_xcode check_xcode_license_approved}.each do |check|
%w{check_xcode_clt check_xcode_license_approved}.each do |check|
out = checks.send(check)
opoo out unless out.nil?
end

View File

@ -21,13 +21,14 @@ module MacOS::Xcode extend self
case MacOS.version
when 10.5 then "3.1.4"
when 10.6 then "3.2.6"
when 10.7..10.8 then "4.6.2"
else
if MacOS.version >= 10.7
"4.6.2"
else
raise "Mac OS X `#{MacOS.version}' is invalid"
raise "Mac OS X '#{MacOS.version}' is invalid"
end
end
def outdated?
version < latest_version
end
def prefix
@ -158,6 +159,10 @@ module MacOS::CLT extend self
$1.to_i >= 425 and $3.to_i >= 28
end
def outdated?
!latest_version?
end
def version
# The pkgutils calls are slow, don't repeat if no CLT installed.
return @version if @version_determined