language/java: add support for OpenJDK formula
This commit is contained in:
		
							parent
							
								
									67c843b91e
								
							
						
					
					
						commit
						cd93d4e38a
					
				@ -4,17 +4,25 @@ module Language
 | 
			
		||||
  module Java
 | 
			
		||||
    def self.system_java_home_cmd(version = nil)
 | 
			
		||||
      version_flag = " --version #{version}" if version
 | 
			
		||||
      "/usr/libexec/java_home#{version_flag}"
 | 
			
		||||
      "/usr/libexec/java_home#{version_flag} --failfast 2>/dev/null"
 | 
			
		||||
    end
 | 
			
		||||
    private_class_method :system_java_home_cmd
 | 
			
		||||
 | 
			
		||||
    def self.java_home(version = nil)
 | 
			
		||||
      f = find_openjdk_formula(version)
 | 
			
		||||
      return f.opt_libexec/"openjdk.jdk/Contents/Home" if f
 | 
			
		||||
 | 
			
		||||
      cmd = system_java_home_cmd(version)
 | 
			
		||||
      Pathname.new Utils.popen_read(cmd).chomp
 | 
			
		||||
      path = Utils.popen_read(cmd).chomp
 | 
			
		||||
 | 
			
		||||
      Pathname.new path if path.present?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    # @private
 | 
			
		||||
    def self.java_home_shell(version = nil)
 | 
			
		||||
      f = find_openjdk_formula(version)
 | 
			
		||||
      return (f.opt_libexec/"openjdk.jdk/Contents/Home").to_s if f
 | 
			
		||||
 | 
			
		||||
      "$(#{system_java_home_cmd(version)})"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,31 @@
 | 
			
		||||
 | 
			
		||||
module Language
 | 
			
		||||
  module Java
 | 
			
		||||
    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?
 | 
			
		||||
          major = f.version.to_s[/\d+/].to_i
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
    def self.java_home(version = nil)
 | 
			
		||||
      f = find_openjdk_formula(version)
 | 
			
		||||
      return f.opt_libexec if f
 | 
			
		||||
 | 
			
		||||
      req = JavaRequirement.new [*version]
 | 
			
		||||
      raise UnsatisfiedRequirements, req.message unless req.satisfied?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user