mirror of https://github.com/folke/lazy.nvim.git
feat(git): added fast `Git.get_origin` and `Git.get_config`
This commit is contained in:
parent
8a37547171
commit
a39fa0f0ce
|
@ -193,4 +193,36 @@ function M.get_tag_refs(repo, tagref)
|
||||||
return tags
|
return tags
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param repo string
|
||||||
|
function M.get_origin(repo)
|
||||||
|
return M.get_config(repo)["remote.origin.url"]
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param repo string
|
||||||
|
function M.get_config(repo)
|
||||||
|
local ok, config = pcall(Util.read_file, repo .. "/.git/config")
|
||||||
|
if not ok then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
---@type table<string, string>
|
||||||
|
local ret = {}
|
||||||
|
---@type string
|
||||||
|
local current_section = nil
|
||||||
|
for line in config:gmatch("[^\n]+") do
|
||||||
|
-- Check if the line is a section header
|
||||||
|
local section = line:match("^%s*%[(.+)%]%s*$")
|
||||||
|
if section then
|
||||||
|
---@type string
|
||||||
|
current_section = section:gsub('%s+"', "."):gsub('"+%s*$', "")
|
||||||
|
else
|
||||||
|
-- Ignore comments and blank lines
|
||||||
|
if not line:match("^%s*#") and line:match("%S") then
|
||||||
|
local key, value = line:match("^%s*(%S+)%s*=%s*(.+)%s*$")
|
||||||
|
ret[current_section .. "." .. key] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
local Git = require("lazy.manage.git")
|
||||||
|
|
||||||
describe("lazy", function()
|
describe("lazy", function()
|
||||||
before_each(function()
|
before_each(function()
|
||||||
vim.g.lazy_did_setup = false
|
vim.g.lazy_did_setup = false
|
||||||
|
@ -31,5 +33,7 @@ describe("lazy", function()
|
||||||
assert(not neodev)
|
assert(not neodev)
|
||||||
assert(Config.plugins["neodev.nvim"]._.installed)
|
assert(Config.plugins["neodev.nvim"]._.installed)
|
||||||
assert(not Config.plugins["neodev.nvim"]._.is_local)
|
assert(not Config.plugins["neodev.nvim"]._.is_local)
|
||||||
|
assert.equal("https://github.com/folke/neodev.nvim.git", Git.get_origin(Config.plugins["neodev.nvim"].dir))
|
||||||
|
assert.equal("https://github.com/folke/paint.nvim.git", Git.get_origin(Config.plugins["paint.nvim"].dir))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue