aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/init.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-05-17 16:48:06 +0200
committerGitHub <noreply@github.com>2021-05-17 16:48:06 +0200
commit6a3a3fee295c6811ec0a420d3bd4f92e973baa29 (patch)
treedf8580f45a7518ed5a394002f91073fd27ab6fb2 /lua/nvim-lsp-installer/installers/init.lua
parents/install_cmd/installer/g (#15) (diff)
downloadmason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar.gz
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar.bz2
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar.lz
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar.xz
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.tar.zst
mason-6a3a3fee295c6811ec0a420d3bd4f92e973baa29.zip
zx: compose installer with shell.raw (#16)
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
new file mode 100644
index 00000000..8cc0e34c
--- /dev/null
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -0,0 +1,28 @@
+local M = {}
+
+function M.compose(installers)
+ if #installers == 0 then
+ error("No installers to compose.")
+ end
+
+ return function (server, callback)
+ local function execute(idx)
+ installers[idx](server, function (success, result)
+ if not success then
+ -- oh no, error. exit early
+ callback(success, result)
+ elseif installers[idx - 1] then
+ -- iterate
+ execute(idx - 1)
+ else
+ -- we done
+ callback(success, result)
+ end
+ end)
+ end
+
+ execute(#installers)
+ end
+end
+
+return M