provider: align all foo#Detect() functions #12839

Problem: ruby#Detect() and node#Detect() don't return a [prog, err] pair
which means callers must special-case them.

Solution: align their return signatures with the perl/pythonx providers.
This commit is contained in:
Justin M. Keyes
2020-09-05 15:02:46 -07:00
committed by GitHub
parent fb55cb2d91
commit bedab7e87b
4 changed files with 20 additions and 21 deletions

View File

@@ -768,18 +768,15 @@ function module.new_pipename()
end
function module.missing_provider(provider)
if provider == 'ruby' or provider == 'node' then
local prog = module.funcs['provider#' .. provider .. '#Detect']()
return prog == '' and (provider .. ' not detected') or false
elseif provider == 'perl' then
local errors = module.funcs['provider#'..provider..'#Detect']()[2]
return errors ~= '' and errors or false
if provider == 'ruby' or provider == 'node' or provider == 'perl' then
local e = module.funcs['provider#'..provider..'#Detect']()[2]
return e ~= '' and e or false
elseif provider == 'python' or provider == 'python3' then
local py_major_version = (provider == 'python3' and 3 or 2)
local errors = module.funcs['provider#pythonx#Detect'](py_major_version)[2]
return errors ~= '' and errors or false
local e = module.funcs['provider#pythonx#Detect'](py_major_version)[2]
return e ~= '' and e or false
else
assert(false, 'Unknown provider: ' .. provider)
assert(false, 'Unknown provider: '..provider)
end
end