aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/requirements/x11_requirement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/requirements/x11_requirement.rb')
-rw-r--r--Library/Homebrew/requirements/x11_requirement.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/Library/Homebrew/requirements/x11_requirement.rb b/Library/Homebrew/requirements/x11_requirement.rb
new file mode 100644
index 000000000..890ef4d4f
--- /dev/null
+++ b/Library/Homebrew/requirements/x11_requirement.rb
@@ -0,0 +1,47 @@
+require "requirement"
+
+class X11Requirement < Requirement
+ include Comparable
+ attr_reader :min_version
+
+ fatal true
+ cask "xquartz"
+ download "https://xquartz.macosforge.org"
+
+ env { ENV.x11 }
+
+ def initialize(name="x11", tags=[])
+ @name = name
+ if /(\d\.)+\d/ === tags.first
+ @min_version = Version.new(tags.shift)
+ @min_version_string = " #{@min_version}"
+ else
+ @min_version = Version.new("0.0.0")
+ @min_version_string = ""
+ end
+ super(tags)
+ end
+
+ satisfy :build_env => false do
+ MacOS::XQuartz.installed? && min_version <= Version.new(MacOS::XQuartz.version)
+ end
+
+ def message
+ s = "XQuartz#{@min_version_string} is required to install this formula."
+ s += super
+ s
+ end
+
+ def <=> other
+ return unless X11Requirement === other
+ min_version <=> other.min_version
+ end
+
+ def eql?(other)
+ super && min_version == other.min_version
+ end
+
+ def inspect
+ "#<#{self.class.name}: #{name.inspect} #{tags.inspect} min_version=#{min_version}>"
+ end
+end