summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-30 07:35:15 +0800
committerGitHub <[email protected]>2021-08-30 07:35:15 +0800
commitce0e9cb8ba249b316809cbcec22572bc29825669 (patch)
tree9b847261330657c125234c1ec6b5862799d63de3
parent8e2369b972733f8e080827f71ec6e91bdb3e8d9c (diff)
parentb84cce50faefa8b327b4d4a62d010bdb25abd491 (diff)
Merge pull request #1615 from xmake-io/cd
improve git and extract ops
-rw-r--r--xmake/modules/devel/git/apply.lua13
-rw-r--r--xmake/modules/devel/git/checkout.lua13
-rw-r--r--xmake/modules/devel/git/clean.lua13
-rw-r--r--xmake/modules/devel/git/lastcommit.lua13
-rw-r--r--xmake/modules/devel/git/pull.lua15
-rw-r--r--xmake/modules/devel/git/reset.lua13
-rw-r--r--xmake/modules/devel/git/submodule/update.lua21
-rw-r--r--xmake/modules/utils/archive/extract.lua28
8 files changed, 16 insertions, 113 deletions
diff --git a/xmake/modules/devel/git/apply.lua b/xmake/modules/devel/git/apply.lua
index 97923da02..ccfd5bf80 100644
--- a/xmake/modules/devel/git/apply.lua
+++ b/xmake/modules/devel/git/apply.lua
@@ -44,17 +44,6 @@ function main(patchfile, opt)
opt = opt or {}
local argv = {"apply", "--reject", "--ignore-whitespace", patchfile}
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- apply it
- os.vrunv(git.program, argv)
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
+ os.vrunv(git.program, argv, {curdir = opt.repodir})
end
diff --git a/xmake/modules/devel/git/checkout.lua b/xmake/modules/devel/git/checkout.lua
index 7a32aa3b1..c78d8f439 100644
--- a/xmake/modules/devel/git/checkout.lua
+++ b/xmake/modules/devel/git/checkout.lua
@@ -47,17 +47,6 @@ function main(commit, opt)
-- init argv
local argv = {"checkout", commit}
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- checkout it
- os.vrunv(git.program, argv)
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
+ os.vrunv(git.program, argv, {curdir = opt.repodir})
end
diff --git a/xmake/modules/devel/git/clean.lua b/xmake/modules/devel/git/clean.lua
index ae21c3d88..52fa81a0b 100644
--- a/xmake/modules/devel/git/clean.lua
+++ b/xmake/modules/devel/git/clean.lua
@@ -61,17 +61,6 @@ function main(opt)
table.insert(argv, "-x")
end
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- clean it
- os.vrunv(git.program, argv)
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
+ os.vrunv(git.program, argv, {curdir = opt.repodir})
end
diff --git a/xmake/modules/devel/git/lastcommit.lua b/xmake/modules/devel/git/lastcommit.lua
index 876812f86..1ad6de1f4 100644
--- a/xmake/modules/devel/git/lastcommit.lua
+++ b/xmake/modules/devel/git/lastcommit.lua
@@ -57,21 +57,10 @@ function main(opt)
envs = {ALL_PROXY = proxy_conf}
end
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- get last commit
- local lastcommit = os.iorunv(git.program, argv, {envs = envs})
+ local lastcommit = os.iorunv(git.program, argv, {envs = envs, curdir = opt.repodir})
if lastcommit then
lastcommit = lastcommit:trim()
end
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
return lastcommit
end
diff --git a/xmake/modules/devel/git/pull.lua b/xmake/modules/devel/git/pull.lua
index 9970f8dbc..412e6e757 100644
--- a/xmake/modules/devel/git/pull.lua
+++ b/xmake/modules/devel/git/pull.lua
@@ -58,18 +58,12 @@ function main(opt)
table.insert(argv, "--tags")
end
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- use proxy?
local envs
local proxy_conf = proxy.config()
if proxy_conf then
-- get proxy configuration from the current remote url
- local remoteinfo = try { function() return os.iorunv(git.program, {"remote", "-v"}) end }
+ local remoteinfo = try { function() return os.iorunv(git.program, {"remote", "-v"}, {curdir = opt.repodir}) end }
if remoteinfo then
for _, line in ipairs(remoteinfo:split('\n', {plain = true})) do
local splitinfo = line:split("%s+")
@@ -86,10 +80,5 @@ function main(opt)
end
-- pull it
- os.vrunv(git.program, argv, {envs = envs})
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
+ os.vrunv(git.program, argv, {envs = envs, curdir = opt.repodir})
end
diff --git a/xmake/modules/devel/git/reset.lua b/xmake/modules/devel/git/reset.lua
index 28b984008..4ed798d25 100644
--- a/xmake/modules/devel/git/reset.lua
+++ b/xmake/modules/devel/git/reset.lua
@@ -71,17 +71,6 @@ function main(opt)
table.insert(argv, opt.commit)
end
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- reset it
- os.vrunv(git.program, argv)
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
+ os.vrunv(git.program, argv, {curdir = opt.repodir})
end
diff --git a/xmake/modules/devel/git/submodule/update.lua b/xmake/modules/devel/git/submodule/update.lua
index 5d9323a02..881663706 100644
--- a/xmake/modules/devel/git/submodule/update.lua
+++ b/xmake/modules/devel/git/submodule/update.lua
@@ -58,37 +58,26 @@ function main(opt)
table.join2(argv, opt.paths)
end
- -- enter repository directory
- local oldir = nil
- if opt.repodir then
- oldir = os.cd(opt.repodir)
- end
-
-- enable long paths
local longpaths_old
local longpaths_changed = false
if opt.longpaths then
- local longpaths_old = try {function () return os.iorunv(git.program, {"config", "--get", "--global", "core.longpaths"}) end}
+ local longpaths_old = try {function () return os.iorunv(git.program, {"config", "--get", "--global", "core.longpaths"}, {curdir = opt.repodir}) end}
if not longpaths_old or not longpaths_old:find("true") then
- os.vrunv(git.program, {"config", "--global", "core.longpaths", "true"})
+ os.vrunv(git.program, {"config", "--global", "core.longpaths", "true"}, {curdir = opt.repodir})
longpaths_changed = true
end
end
-- submodule it
- os.vrunv(git.program, argv)
+ os.vrunv(git.program, argv, {curdir = opt.repodir})
-- restore old long paths configuration
if longpaths_changed then
if longpaths_old and longpaths_old:find("false") then
- os.vrunv(git.program, {"config", "--global", "core.longpaths", "false"})
+ os.vrunv(git.program, {"config", "--global", "core.longpaths", "false"}, {curdir = opt.repodir})
else
- os.vrunv(git.program, {"config", "--global", "--unset", "core.longpaths"})
+ os.vrunv(git.program, {"config", "--global", "--unset", "core.longpaths", {curdir = opt.repodir}})
end
end
-
- -- leave repository directory
- if oldir then
- os.cd(oldir)
- end
end
diff --git a/xmake/modules/utils/archive/extract.lua b/xmake/modules/utils/archive/extract.lua
index dd09df9ac..69616fea6 100644
--- a/xmake/modules/utils/archive/extract.lua
+++ b/xmake/modules/utils/archive/extract.lua
@@ -85,9 +85,7 @@ function _extract_using_tar(archivefile, outputdir, extension, opt)
-- extract it
if is_host("windows") then
- local oldir = os.cd(outputdir)
- os.vrunv(program, argv)
- os.cd(oldir)
+ os.vrunv(program, argv, {curdir = outputdir})
else
os.vrunv(program, argv)
end
@@ -201,14 +199,8 @@ function _extract_using_gzip(archivefile, outputdir, extension, opt)
os.cp(archivefile, tmpfile)
end
- -- enter outputdir
- local oldir = os.cd(outputdir)
-
-- extract it
- os.vrunv(program, argv)
-
- -- leave outputdir
- os.cd(oldir)
+ os.vrunv(program, argv, {curdir = outputdir})
-- continue to extract *.tar file
if outputdir_old then
@@ -256,14 +248,8 @@ function _extract_using_xz(archivefile, outputdir, extension, opt)
os.cp(archivefile, tmpfile)
end
- -- enter outputdir
- local oldir = os.cd(outputdir)
-
-- extract it
- os.vrunv(program, argv)
-
- -- leave outputdir
- os.cd(oldir)
+ os.vrunv(program, argv, {curdir = outputdir})
-- continue to extract *.tar file
if outputdir_old then
@@ -369,14 +355,8 @@ function _extract_using_bzip2(archivefile, outputdir, extension, opt)
os.cp(archivefile, tmpfile)
end
- -- enter outputdir
- local oldir = os.cd(outputdir)
-
-- extract it
- os.vrunv(program, argv)
-
- -- leave outputdir
- os.cd(oldir)
+ os.vrunv(program, argv, {curdir = outputdir})
-- continue to extract *.tar file
if outputdir_old then