aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua58
1 files changed, 40 insertions, 18 deletions
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
index 98bb78bc..7698e900 100644
--- a/lua/nvim-lsp-installer/installers/init.lua
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -3,9 +3,9 @@ local Data = require "nvim-lsp-installer.data"
local M = {}
-function M.join(installers)
+function M.pipe(installers)
if #installers == 0 then
- error "No installers to join."
+ error "No installers to pipe."
end
return function(server, callback, context)
@@ -30,27 +30,49 @@ end
-- much fp, very wow
function M.compose(installers)
- return M.join(Data.list_reverse(installers))
+ return M.pipe(Data.list_reverse(installers))
end
+function M.always_succeed(installer)
+ return function(server, callback, context)
+ installer(server, function()
+ callback(true)
+ end, context)
+ end
+end
+
+local function get_by_platform(platform_table)
+ if platform.is_unix then
+ return platform_table.unix
+ elseif platform.is_win then
+ return platform_table.win
+ else
+ return nil
+ end
+end
+
+-- non-exhaustive
+function M.on(platform_table)
+ return function(server, callback, context)
+ local installer = get_by_platform(platform_table)
+ if installer then
+ installer(server, callback, context)
+ else
+ callback(true)
+ end
+ end
+end
+
+-- exhaustive
function M.when(platform_table)
return function(server, callback, context)
- if platform.is_unix then
- if platform_table.unix then
- platform_table.unix(server, callback, context)
- else
- context.stdio_sink.stderr(("Unix is not yet supported for server %q."):format(server.name))
- callback(false)
- end
- elseif platform.is_win then
- if platform_table.win then
- platform_table.win(server, callback, context)
- else
- context.stdio_sink.stderr(("Windows is not yet supported for server %q."):format(server.name))
- callback(false)
- end
+ local installer = get_by_platform(platform_table)
+ if installer then
+ installer(server, callback, context)
else
- context.sdtio_sink.stderr "installers.when: Could not find installer for current platform."
+ context.stdio_sink.stderr(
+ ("Current operating system is not yet supported for server %q."):format(server.name)
+ )
callback(false)
end
end