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