feat: include versioning
This commit is contained in:
parent
6a7ade554e
commit
f13a05c806
6 changed files with 60 additions and 29 deletions
36
lua/cp/version.lua
Normal file
36
lua/cp/version.lua
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue