Dotfiles/lib/git.lua

23 lines
887 B
Lua

local git = {}
---@class GitRepoConfig
---@field src string The source url to the repo
---@field target string The target directory where you want the repo to be cloned
---@field version string The git revision. Can be a sha, branch or tag
--- Tracks a git repo keeping it up to date with a revision. Will clone the
--- repo if its already cloned. Will then checkout the required revision.
---@param config GitRepoConfig
git.repo = function(config)
assert(config.src ~= nil, "Git repo must have a source")
assert(config.target ~= nil, "Git repo must have a target")
assert(config.version ~= nil, "Git repo must have a version")
if not configz.is_directory(config.target) then
configz.run(string.format("git clone %s %s", config.src, config.target))
end
configz.run(string.format("cd %s && git pull && git checkout %s", config.target, config.version))
end
return git