Skip to content

Commit 1a92790

Browse files
committed
Merge pull request #12 from lowjoel/master
Support checking the PATHEXT variable on Windows.
2 parents 33e51ad + 7df6bf6 commit 1a92790

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

lib/execjs/external_runtime.rb

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,20 +120,25 @@ def binary
120120
@binary ||= which(@command)
121121
end
122122

123-
def locate_executable(cmd)
124-
if ExecJS.windows? && File.extname(cmd) == ""
125-
cmd << ".exe"
126-
end
127-
128-
if File.executable? cmd
129-
cmd
130-
else
131-
path = ENV['PATH'].split(File::PATH_SEPARATOR).find { |p|
132-
full_path = File.join(p, cmd)
133-
File.executable?(full_path) && File.file?(full_path)
123+
def locate_executable(command)
124+
commands = Array(command)
125+
if ExecJS.windows? && File.extname(command) == ""
126+
ENV['PATHEXT'].split(File::PATH_SEPARATOR).each { |p|
127+
commands << (command + p)
134128
}
135-
path && File.expand_path(cmd, path)
136129
end
130+
131+
commands.find { |cmd|
132+
if File.executable? cmd
133+
cmd
134+
else
135+
path = ENV['PATH'].split(File::PATH_SEPARATOR).find { |p|
136+
full_path = File.join(p, cmd)
137+
File.executable?(full_path) && File.file?(full_path)
138+
}
139+
path && File.expand_path(cmd, path)
140+
end
141+
}
137142
end
138143

139144
protected

0 commit comments

Comments
 (0)