23 lines
887 B
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
|