summaryrefslogtreecommitdiff
path: root/xmake/modules/utils/archive/extract.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2021-02-03 00:39:01 +0800
committerruki <[email protected]>2021-02-03 00:39:01 +0800
commita76aab983d3acb30cf8138bffbc4f755c649fb30 (patch)
tree4efaec3d4f72ccc37791f3ebd2d1fc8a94898801 /xmake/modules/utils/archive/extract.lua
parent8caf1c9c6a3481e933a74bd5977eb3448c56c4c8 (diff)
improve extractor
Diffstat (limited to 'xmake/modules/utils/archive/extract.lua')
-rw-r--r--xmake/modules/utils/archive/extract.lua44
1 files changed, 31 insertions, 13 deletions
diff --git a/xmake/modules/utils/archive/extract.lua b/xmake/modules/utils/archive/extract.lua
index a707f18dd..35e18f20d 100644
--- a/xmake/modules/utils/archive/extract.lua
+++ b/xmake/modules/utils/archive/extract.lua
@@ -343,19 +343,37 @@ function main(archivefile, outputdir, opt)
opt = opt or {}
-- init extractors
- local extractors =
- {
- [".zip"] = {_extract_using_unzip, _extract_using_tar, _extract_using_7z}
- , [".7z"] = {_extract_using_7z}
- , [".gz"] = {_extract_using_gzip, _extract_using_tar, _extract_using_7z}
- , [".xz"] = {_extract_using_xz, _extract_using_tar, _extract_using_7z}
- , [".tgz"] = {_extract_using_tar, _extract_using_7z}
- , [".bz2"] = {_extract_using_tar, _extract_using_7z}
- , [".tar"] = {_extract_using_tar, _extract_using_7z}
- , [".tar.gz"] = {_extract_using_tar, _extract_using_7z, _extract_using_gzip}
- , [".tar.xz"] = {_extract_using_tar, _extract_using_7z, _extract_using_xz}
- , [".tar.bz2"] = {_extract_using_tar, _extract_using_7z}
- }
+ local extractors
+ if is_host("windows") then
+ -- we use 7z first, becase xmake package has builtin 7z program on windows
+ extractors =
+ {
+ [".zip"] = {_extract_using_7z, _extract_using_unzip, _extract_using_tar}
+ , [".7z"] = {_extract_using_7z}
+ , [".gz"] = {_extract_using_7z, _extract_using_gzip, _extract_using_tar}
+ , [".xz"] = {_extract_using_7z, _extract_using_xz, _extract_using_tar}
+ , [".tgz"] = {_extract_using_7z, _extract_using_tar}
+ , [".bz2"] = {_extract_using_7z, _extract_using_tar}
+ , [".tar"] = {_extract_using_7z, _extract_using_tar}
+ , [".tar.gz"] = {_extract_using_7z, _extract_using_tar, _extract_using_gzip}
+ , [".tar.xz"] = {_extract_using_7z, _extract_using_tar, _extract_using_xz}
+ , [".tar.bz2"] = {_extract_using_7z, _extract_using_tar}
+ }
+ else
+ extractors =
+ {
+ [".zip"] = {_extract_using_unzip, _extract_using_tar, _extract_using_7z}
+ , [".7z"] = {_extract_using_7z}
+ , [".gz"] = {_extract_using_gzip, _extract_using_tar, _extract_using_7z}
+ , [".xz"] = {_extract_using_xz, _extract_using_tar, _extract_using_7z}
+ , [".tgz"] = {_extract_using_tar, _extract_using_7z}
+ , [".bz2"] = {_extract_using_tar, _extract_using_7z}
+ , [".tar"] = {_extract_using_tar, _extract_using_7z}
+ , [".tar.gz"] = {_extract_using_tar, _extract_using_7z, _extract_using_gzip}
+ , [".tar.xz"] = {_extract_using_tar, _extract_using_7z, _extract_using_xz}
+ , [".tar.bz2"] = {_extract_using_tar, _extract_using_7z}
+ }
+ end
-- get extension
local extension = opt.extension or get_archive_extension(archivefile)