2020-10-10 14:16:11 +02:00
|
|
|
# typed: true
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2015-02-26 22:36:04 +08:00
|
|
|
module Language
|
2020-08-17 18:58:40 +02:00
|
|
|
# Helper functions for Java formulae.
|
|
|
|
#
|
|
|
|
# @api public
|
2015-02-26 22:36:04 +08:00
|
|
|
module Java
|
2020-06-19 11:46:31 +01:00
|
|
|
def self.find_openjdk_formula(version = nil)
|
|
|
|
can_be_newer = version&.end_with?("+")
|
|
|
|
version = version.to_i
|
|
|
|
|
|
|
|
openjdk = Formula["openjdk"]
|
|
|
|
[openjdk, *openjdk.versioned_formulae].find do |f|
|
|
|
|
next false unless f.any_version_installed?
|
|
|
|
|
|
|
|
unless version.zero?
|
2020-08-31 10:59:27 -07:00
|
|
|
major = f.any_installed_version.major
|
2020-06-19 11:46:31 +01:00
|
|
|
next false if major < version
|
|
|
|
next false if major > version && !can_be_newer
|
|
|
|
end
|
|
|
|
|
|
|
|
true
|
|
|
|
end
|
|
|
|
rescue FormulaUnavailableError
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
private_class_method :find_openjdk_formula
|
|
|
|
|
2018-11-27 11:52:30 -08:00
|
|
|
def self.java_home(version = nil)
|
2021-01-25 09:18:10 +00:00
|
|
|
find_openjdk_formula(version)&.opt_libexec
|
2018-11-27 11:52:30 -08:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.java_home_shell(version = nil)
|
|
|
|
java_home(version).to_s
|
2015-03-12 23:35:24 +08:00
|
|
|
end
|
2020-06-19 11:55:05 +01:00
|
|
|
private_class_method :java_home_shell
|
2015-03-12 23:35:24 +08:00
|
|
|
|
2015-08-03 13:09:07 +01:00
|
|
|
def self.java_home_env(version = nil)
|
2018-11-27 11:52:30 -08:00
|
|
|
{ JAVA_HOME: java_home_shell(version) }
|
2015-03-12 23:35:24 +08:00
|
|
|
end
|
|
|
|
|
2015-08-03 13:09:07 +01:00
|
|
|
def self.overridable_java_home_env(version = nil)
|
2018-11-27 11:52:30 -08:00
|
|
|
{ JAVA_HOME: "${JAVA_HOME:-#{java_home_shell(version)}}" }
|
2015-02-26 22:36:04 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|