diff options
| author | ruki <[email protected]> | 2021-02-03 00:39:01 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-02-03 00:39:01 +0800 |
| commit | a76aab983d3acb30cf8138bffbc4f755c649fb30 (patch) | |
| tree | 4efaec3d4f72ccc37791f3ebd2d1fc8a94898801 /xmake/modules/utils/archive/extract.lua | |
| parent | 8caf1c9c6a3481e933a74bd5977eb3448c56c4c8 (diff) | |
improve extractor
Diffstat (limited to 'xmake/modules/utils/archive/extract.lua')
| -rw-r--r-- | xmake/modules/utils/archive/extract.lua | 44 |
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) |
