diff options
Diffstat (limited to '')
-rw-r--r-- | lua/dep.lua | 172 |
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) |