Skip to content

Commit

Permalink
fix: add missing git.lua for downloader
Browse files Browse the repository at this point in the history
  • Loading branch information
Saghen committed Dec 23, 2024
1 parent cab0e8e commit f7bef25
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions lua/blink/cmp/fuzzy/download/git.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
local async = require('blink.cmp.lib.async')
local files = require('blink.cmp.fuzzy.download.files')
local git = {}

function git.get_version()
return async.task.await_all({ git.get_tag(), git.get_sha() }):map(
function(results)
return {
tag = results[1],
sha = results[2],
}
end
)
end

function git.get_tag()
return async.task.new(function(resolve, reject)
-- If repo_dir is nil, no git reposiory is found, similar to `out.code == 128`
local repo_dir = vim.fs.root(files.root_dir, '.git')
if not repo_dir then resolve() end

vim.system({
'git',
'--git-dir',
vim.fs.joinpath(repo_dir, '.git'),
'--work-tree',
repo_dir,
'describe',
'--tags',
'--exact-match',
}, { cwd = files.root_dir }, function(out)
if out.code == 128 then return resolve() end
if out.code ~= 0 then
return reject('While getting git tag, git exited with code ' .. out.code .. ': ' .. out.stderr)
end

local lines = vim.split(out.stdout, '\n')
if not lines[1] then return reject('Expected atleast 1 line of output from git describe') end
return resolve(lines[1])
end)
end)
end

function git.get_sha()
return async.task.new(function(resolve, reject)
-- If repo_dir is nil, no git reposiory is found, similar to `out.code == 128`
local repo_dir = vim.fs.root(files.root_dir, '.git')
if not repo_dir then resolve() end

vim.system({
'git',
'--git-dir',
vim.fs.joinpath(repo_dir, '.git'),
'--work-tree',
repo_dir,
'rev-parse',
'HEAD',
}, { cwd = files.root_dir }, function(out)
if out.code == 128 then return resolve() end
if out.code ~= 0 then
return reject('While getting git sha, git exited with code ' .. out.code .. ': ' .. out.stderr)
end

local sha = vim.split(out.stdout, '\n')[1]
return resolve(sha)
end)
end)
end

return git

2 comments on commit f7bef25

@Sir-Caljerque
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ty for fix mr. saghen i was getting an error

@JayLCypher
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏

Please sign in to comment.