aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-05-13 19:39:05 +0200
committerGitHub <noreply@github.com>2022-05-13 19:39:05 +0200
commit86def32e02bef95b5c81bffe991e345a34d53d69 (patch)
tree5d79d622494c22b5433386a219ad0564970ab163 /lua
parentAdd VLS (for vlang) (#629) (diff)
downloadmason-86def32e02bef95b5c81bffe991e345a34d53d69.tar
mason-86def32e02bef95b5c81bffe991e345a34d53d69.tar.gz
mason-86def32e02bef95b5c81bffe991e345a34d53d69.tar.bz2
mason-86def32e02bef95b5c81bffe991e345a34d53d69.tar.lz
mason-86def32e02bef95b5c81bffe991e345a34d53d69.tar.xz
mason-86def32e02bef95b5c81bffe991e345a34d53d69.tar.zst
mason-86def32e02bef95b5c81bffe991e345a34d53d69.zip
feat(health): check GitHub rate limit (#697)
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer/core/managers/github/client.lua9
-rw-r--r--lua/nvim-lsp-installer/health/init.lua32
2 files changed, 41 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/core/managers/github/client.lua b/lua/nvim-lsp-installer/core/managers/github/client.lua
index da0e4302..c7c035db 100644
--- a/lua/nvim-lsp-installer/core/managers/github/client.lua
+++ b/lua/nvim-lsp-installer/core/managers/github/client.lua
@@ -105,4 +105,13 @@ function M.fetch_latest_tag(repo)
end)
end
+---@alias GitHubRateLimit {limit: integer, remaining: integer, reset: integer, used: integer}
+---@alias GitHubRateLimitResponse {resources: { core: GitHubRateLimit }}
+
+---@async
+--@return Result @of GitHubRateLimitResponse
+function M.fetch_rate_limit()
+ return api_call "rate_limit"
+end
+
return M
diff --git a/lua/nvim-lsp-installer/health/init.lua b/lua/nvim-lsp-installer/health/init.lua
index 9052161f..3c566df5 100644
--- a/lua/nvim-lsp-installer/health/init.lua
+++ b/lua/nvim-lsp-installer/health/init.lua
@@ -1,6 +1,8 @@
local health = require "health"
local process = require "nvim-lsp-installer.core.process"
+local a = require "nvim-lsp-installer.core.async"
local platform = require "nvim-lsp-installer.core.platform"
+local github_client = require "nvim-lsp-installer.core.managers.github.client"
local functional = require "nvim-lsp-installer.core.functional"
local when = functional.when
@@ -226,6 +228,36 @@ function M.check()
vim.wait(5000, function()
return completed >= #checks
end, 50)
+
+ a.run_blocking(function()
+ github_client.fetch_rate_limit()
+ :map(
+ ---@param rate_limit GitHubRateLimitResponse
+ function(rate_limit)
+ if vim.in_fast_event() then
+ a.scheduler()
+ end
+ local remaining = rate_limit.resources.core.remaining
+ local used = rate_limit.resources.core.used
+ local limit = rate_limit.resources.core.limit
+ local reset = rate_limit.resources.core.reset
+ local diagnostics = ("Used: %d. Remaining: %d. Limit: %d. Reset: %s."):format(
+ used,
+ remaining,
+ limit,
+ vim.fn.strftime("%c", reset)
+ )
+ if remaining <= 0 then
+ health.report_error(("GitHub API rate limit exceeded. %s"):format(diagnostics))
+ else
+ health.report_ok(("GitHub API rate limit. %s"):format(diagnostics))
+ end
+ end
+ )
+ :on_failure(function()
+ health.report_warn "Failed to check GitHub API rate limit status."
+ end)
+ end)
end
return M