aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/requirements/xcode_requirement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/requirements/xcode_requirement.rb')
-rw-r--r--Library/Homebrew/requirements/xcode_requirement.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/Library/Homebrew/requirements/xcode_requirement.rb b/Library/Homebrew/requirements/xcode_requirement.rb
new file mode 100644
index 000000000..ff167c6fd
--- /dev/null
+++ b/Library/Homebrew/requirements/xcode_requirement.rb
@@ -0,0 +1,39 @@
+require "requirement"
+
+class XcodeRequirement < Requirement
+ fatal true
+
+ satisfy(build_env: false) { xcode_installed_version }
+
+ def initialize(tags)
+ @version = tags.find { |tag| tags.delete(tag) if tag =~ /(\d\.)+\d/ }
+ super
+ end
+
+ def xcode_installed_version
+ return false unless MacOS::Xcode.installed?
+ return true unless @version
+ MacOS::Xcode.version >= @version
+ end
+
+ def message
+ version = " #{@version}" if @version
+ message = <<~EOS
+ A full installation of Xcode.app#{version} is required to compile this software.
+ Installing just the Command Line Tools is not sufficient.
+ EOS
+ if MacOS.version >= :lion
+ message + <<~EOS
+ Xcode can be installed from the App Store.
+ EOS
+ else
+ message + <<~EOS
+ Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
+ EOS
+ end
+ end
+
+ def inspect
+ "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>"
+ end
+end