aboutsummaryrefslogtreecommitdiffstats
path: root/lua/dep.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/dep.lua172
1 files changed, 90 insertions, 82 deletions
diff --git a/lua/dep.lua b/lua/dep.lua
index 1c143c8..2198863 100644
--- a/lua/dep.lua
+++ b/lua/dep.lua
@@ -479,97 +479,105 @@ local function sync(package, cb)
return
end
- if package.exists then
- if package.pin then
- cb()
- return
- end
+ local function log_err(err)
+ logger:log("error", string.format("failed to update %s; reason: %s", package.id, err))
+ end
- local function log_err(err)
- logger:log("error", string.format("failed to update %s; reason: %s", package.id, err))
+ proc.git_resolve_branch(package.url, package.branch, function(err, branch)
+ if err then
+ log_err(err)
+ cb(err)
end
+ package.branch = branch
- proc.git_rev_parse(package.dir, "HEAD", function(err, before)
- if err then
- log_err(before)
- cb(err)
- else
- if package.commit then
- proc.git_checkout(package.dir, package.branch, package.commit, function(err, message)
- if err then
- log_err(message)
- cb(err)
- else
- proc.git_rev_parse(package.dir, package.commit, function(err, after)
- if err then
- log_err(after)
- cb(err)
- elseif before == after then
- logger:log("skip", string.format("skipped %s", package.id))
- cb(err)
- else
- mark_reconfigure(package)
- logger:log("update", string.format("updated %s; %s -> %s", package.id, before, after))
- end
- end)
- end
- end)
- else
- proc.git_fetch(package.dir, "origin", package.branch or "HEAD", function(err, message)
- if err then
- log_err(message)
- cb(err)
- else
- proc.git_rev_parse(package.dir, "FETCH_HEAD", function(err, after)
- if err then
- log_err(after)
- cb(err)
- elseif before == after then
- logger:log("skip", string.format("skipped %s", package.id))
- cb(err)
- else
- proc.git_reset(package.dir, after, function(err, message)
- if err then
- log_err(message)
- else
- mark_reconfigure(package)
- logger:log("update", string.format("updated %s; %s -> %s", package.id, before, after))
- end
+ if package.exists then
+ if package.pin then
+ cb()
+ return
+ end
+ proc.git_rev_parse(package.dir, "HEAD", function(err, before)
+ if err then
+ log_err(before)
+ cb(err)
+ else
+ if package.commit then
+ proc.git_checkout(package.dir, package.branch, package.commit, function(err, message)
+ if err then
+ log_err(message)
+ cb(err)
+ else
+ proc.git_rev_parse(package.dir, package.commit, function(err, after)
+ if err then
+ log_err(after)
+ cb(err)
+ elseif before == after then
+ logger:log("skip", string.format("skipped %s", package.id))
+ cb(err)
+ else
+ mark_reconfigure(package)
+ logger:log("update", string.format("updated %s; %s -> %s", package.id, before, after))
+ end
+ end)
+ end
+ end)
+ else
+ proc.git_fetch(package.dir, "origin", package.branch or "HEAD", function(err, message)
+ if err then
+ log_err(message)
+ cb(err)
+ else
+ proc.git_rev_parse(package.dir, "FETCH_HEAD", function(err, after)
+ if err then
+ log_err(after)
+ cb(err)
+ elseif before == after then
+ logger:log("skip", string.format("skipped %s", package.id))
cb(err)
- end)
- end
- end)
- end
- end)
+ else
+ proc.git_reset(package.dir, after, function(err, message)
+ if err then
+ log_err(message)
+ else
+ mark_reconfigure(package)
+ logger:log("update", string.format("updated %s; %s -> %s", package.id, before, after))
+ end
+
+ cb(err)
+ end)
+ end
+ end)
+ end
+ end)
+ end
end
- end
- end)
- else
- proc.git_clone(package.dir, package.url, package.branch, function(err, message)
- if err then
- logger:log("error", string.format("failed to install %s; reason: %s", package.id, message))
- else
- if package.commit then
- proc.git_checkout(package.dir, package.branch, package.commit, function(err, message)
- if err then
- logger:log("error", string.format("failed to checkout %s; reason: %s", package.id, message))
- else
- package.exists = true
- mark_reconfigure(package)
- logger:log("install", string.format("installed %s", package.id))
- end
- end)
+ end)
+ else
+ proc.git_clone(package.dir, package.url, package.branch, function(err, message)
+ if err then
+ logger:log("error", string.format("failed to install %s; reason: %s", package.id, message))
else
- package.exists = true
- mark_reconfigure(package)
- logger:log("install", string.format("installed %s", package.id))
+ if package.commit then
+ proc.git_checkout(package.dir, package.branch, package.commit, function(err, message)
+ if err then
+ logger:log("error", string.format("failed to checkout %s; reason: %s", package.id, message))
+ else
+ package.exists = true
+ mark_reconfigure(package)
+ logger:log("install", string.format("installed %s", package.id))
+ end
+ end)
+ else
+ package.exists = true
+ mark_reconfigure(package)
+ logger:log("install", string.format("installed %s", package.id))
+ end
end
- end
- cb(err)
- end)
- end
+ cb(err)
+ end)
+ end
+ end)
end
local function sync_list(list, on_complete)