From 2275067747a118d6002f421cb54f28affbc0ef98 Mon Sep 17 00:00:00 2001 From: William Boman Date: Mon, 11 Sep 2023 00:05:44 +0200 Subject: refactor!: remove old managers (#1497) --- lua/mason-core/managers/github/client.lua | 84 ------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 lua/mason-core/managers/github/client.lua (limited to 'lua/mason-core/managers/github/client.lua') diff --git a/lua/mason-core/managers/github/client.lua b/lua/mason-core/managers/github/client.lua deleted file mode 100644 index e8301f72..00000000 --- a/lua/mason-core/managers/github/client.lua +++ /dev/null @@ -1,84 +0,0 @@ -local _ = require "mason-core.functional" -local fetch = require "mason-core.fetch" -local spawn = require "mason-core.spawn" - -local M = {} - ----@alias GitHubCommit { sha: string } ----@alias GitHubRef { ref: string } - -local stringify_params = _.compose(_.join "&", _.map(_.join "="), _.sort_by(_.head), _.to_pairs) - ----@param path string ----@param opts { params: table? }? ----@return Result # JSON decoded response. -local function gh_api_call(path, opts) - if opts and opts.params then - local params = stringify_params(opts.params) - path = ("%s?%s"):format(path, params) - end - return spawn - .gh({ "api", path, env = { CLICOLOR_FORCE = 0 } }) - :map(_.prop "stdout") - :or_else(function() - return fetch(("https://api.github.com/%s"):format(path), { - headers = { - Accept = "application/vnd.github.v3+json; q=1.0, application/json; q=0.8", - }, - }) - end) - :map_catching(vim.json.decode) -end - -M.api_call = gh_api_call - ----@async ----@param repo string The GitHub repo ("username/repo"). ----@return Result # Result -function M.fetch_latest_release(repo) - local path = ("repos/%s/releases/latest"):format(repo) - return gh_api_call(path) -end - ----@async ----@param repo string The GitHub repo ("username/repo"). ----@return Result # Result -function M.fetch_all_releases(repo) - local path = ("repos/%s/releases"):format(repo) - return gh_api_call(path) -end - ----@async ----@param repo string The GitHub repo ("username/repo"). ----@return Result # Result -function M.fetch_all_tags(repo) - local path = ("repos/%s/git/matching-refs/tags"):format(repo) - return gh_api_call(path) -end - ----@async ----@param repo string The GitHub repo ("username/repo"). ----@param opts { page: integer?, per_page: integer? }? ----@return Result # Result -function M.fetch_commits(repo, opts) - local path = ("repos/%s/commits"):format(repo) - return gh_api_call(path, { - params = { - page = opts and opts.page or 1, - per_page = opts and opts.per_page or 30, - }, - }):map_err(function() - return ("Failed to fetch commits for GitHub repository %s."):format(repo) - end) -end - ----@alias GitHubRateLimit {limit: integer, remaining: integer, reset: integer, used: integer} ----@alias GitHubRateLimitResponse {resources: { core: GitHubRateLimit }} - ----@async ----@return Result # Result -function M.fetch_rate_limit() - return gh_api_call "rate_limit" -end - -return M -- cgit v1.2.3-70-g09d2