aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/context.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-12-06 16:59:06 +0100
committerGitHub <noreply@github.com>2021-12-06 16:59:06 +0100
commit1f6f518f752b9e71c5eaa0ed156bedea25f12a14 (patch)
tree2c7e0e39fa500d37c6c437f92df61ffcf0365885 /lua/nvim-lsp-installer/installers/context.lua
parentAdd arduino-language-server support (#298) (diff)
downloadmason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar.gz
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar.bz2
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar.lz
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar.xz
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.tar.zst
mason-1f6f518f752b9e71c5eaa0ed156bedea25f12a14.zip
add quick_lint_js (#313)
Diffstat (limited to 'lua/nvim-lsp-installer/installers/context.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/context.lua37
1 files changed, 36 insertions, 1 deletions
diff --git a/lua/nvim-lsp-installer/installers/context.lua b/lua/nvim-lsp-installer/installers/context.lua
index e80485a4..d76bd6ba 100644
--- a/lua/nvim-lsp-installer/installers/context.lua
+++ b/lua/nvim-lsp-installer/installers/context.lua
@@ -63,6 +63,41 @@ local function fetch(url, callback)
end
---@param repo string @The GitHub repo ("username/repo").
+function M.use_github_latest_tag(repo)
+ ---@type ServerInstallerFunction
+ return function(_, callback, context)
+ if context.requested_server_version then
+ log.fmt_debug(
+ "Requested server version already provided (%s), skipping fetching tags from GitHub.",
+ context.requested_server_version
+ )
+ -- User has already provided a version - don't fetch the tags from GitHub
+ return callback(true)
+ end
+ context.stdio_sink.stdout "Fetching tags from GitHub API...\n"
+ fetch(
+ ("https://api.github.com/repos/%s/tags"):format(repo),
+ vim.schedule_wrap(function(err, raw_data)
+ if err then
+ context.stdio_sink.stderr(tostring(err) .. "\n")
+ callback(false)
+ return
+ end
+
+ local data = Data.json_decode(raw_data)
+ if vim.tbl_count(data) == 0 then
+ context.stdio_sink.stderr("No tags found for GitHub repo %s.\n", repo)
+ callback(false)
+ return
+ end
+ context.requested_server_version = data[1].name
+ callback(true)
+ end)
+ )
+ end
+end
+
+---@param repo string @The GitHub repo ("username/repo").
function M.use_github_release(repo)
---@type ServerInstallerFunction
return function(server, callback, context)
@@ -79,7 +114,7 @@ function M.use_github_release(repo)
("https://api.github.com/repos/%s/releases/latest"):format(repo),
vim.schedule_wrap(function(err, response)
if err then
- context.stdio_sink.stderr(tostring(err))
+ context.stdio_sink.stderr(tostring(err) .. "\n")
return callback(false)
end
local version = Data.json_decode(response).tag_name