38 lines
852 B
Lua
38 lines
852 B
Lua
local M = {}
|
|
|
|
local function get_git_version()
|
|
local plugin_path = debug.getinfo(1, 'S').source:sub(2)
|
|
local plugin_root = vim.fn.fnamemodify(plugin_path, ':h:h:h')
|
|
|
|
local result = vim
|
|
.system({ 'git', 'describe', '--tags', '--always', '--dirty' }, {
|
|
cwd = plugin_root,
|
|
text = true,
|
|
})
|
|
:wait()
|
|
|
|
if result.code == 0 then
|
|
return result.stdout:gsub('\n', '')
|
|
else
|
|
return 'unknown'
|
|
end
|
|
end
|
|
|
|
local function parse_semver(version_string)
|
|
local semver = version_string:match('^v?(%d+%.%d+%.%d+)')
|
|
if semver then
|
|
local major, minor, patch = semver:match('(%d+)%.(%d+)%.(%d+)')
|
|
return {
|
|
full = semver,
|
|
major = tonumber(major),
|
|
minor = tonumber(minor),
|
|
patch = tonumber(patch),
|
|
}
|
|
end
|
|
return nil
|
|
end
|
|
|
|
M.version = get_git_version()
|
|
M.semver = parse_semver(M.version)
|
|
|
|
return M
|