Module: Mxrb::Runtime::JavaLocator
- Defined in:
- lib/mxrb/runtime/java_locator.rb
Overview
Resolves a version-compatible local JDK without invoking a version manager shim.
Class Method Summary collapse
Class Method Details
.installed(major) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/mxrb/runtime/java_locator.rb', line 17 def installed(major) %w[.asdf/installs/java .local/share/mise/installs/java].flat_map do |root| Dir.glob(File.join(Dir.home, root, '*')).select do |path| File.basename(path).match?(/(?:\A|[-_])#{Regexp.escape(major.to_s)}(?:[._-]|\z)/) end end.sort.reverse end |
.resolve(major, configured: nil) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/mxrb/runtime/java_locator.rb', line 9 def resolve(major, configured: nil) candidates = [configured, ENV['MXRB_JAVA_HOME'], ENV['JAVA_HOME']] .compact.reject { _1.to_s.empty? } candidates.concat(installed(major)) candidates.map { File.(_1) } .find { File.executable?(File.join(_1, 'bin', 'java')) } end |