47 lines
1.1 KiB
Lua
47 lines
1.1 KiB
Lua
local path = require('path')
|
|
local w = require('tables').wrap
|
|
local parser = clink.arg.new_parser
|
|
|
|
local NVM_ROOT
|
|
|
|
local function get_nvm_root()
|
|
if NVM_ROOT then return NVM_ROOT end
|
|
|
|
local proc = io.popen("nvm root")
|
|
if not proc then
|
|
NVM_ROOT = ""
|
|
return NVM_ROOT
|
|
end
|
|
|
|
local lines = proc:read('*all')
|
|
NVM_ROOT = lines:match("Current Root:%s(.*)%s*\n$") or ""
|
|
proc:close()
|
|
|
|
return NVM_ROOT
|
|
end
|
|
|
|
local installed = function ()
|
|
return w(clink.find_dirs(get_nvm_root().."/*"))
|
|
:filter(path.is_real_dir)
|
|
:map(function (dir)
|
|
return dir:match("v(.*)")
|
|
end)
|
|
end
|
|
|
|
local archs = parser({"64", "32"})
|
|
|
|
local nvm_parser = parser({
|
|
"arch"..archs,
|
|
"install"..parser({"latest"}, archs),
|
|
"list"..parser({installed, "available"}),
|
|
"ls"..parser({installed, "available"}),
|
|
"on", "off",
|
|
"proxy"..parser({"none"}),
|
|
"uninstall"..parser({installed}),
|
|
"use"..parser({installed}, archs),
|
|
"root",
|
|
"version", "v"
|
|
}, "-h", "--help", "-v", "--version")
|
|
|
|
clink.arg.register_parser("nvm", nvm_parser)
|