diff options
| author | William Boman <william@redwill.se> | 2022-05-13 19:39:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-13 19:39:05 +0200 |
| commit | 86def32e02bef95b5c81bffe991e345a34d53d69 (patch) | |
| tree | 5d79d622494c22b5433386a219ad0564970ab163 /lua | |
| parent | Add VLS (for vlang) (#629) (diff) | |
| download | mason-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.lua | 9 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/health/init.lua | 32 |
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 |
