diff options
| author | ruki <[email protected]> | 2025-04-11 15:44:04 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-11 15:44:04 +0800 |
| commit | 4d20b980c0d3826641a7b0481145a5e495417f6e (patch) | |
| tree | b1f03bb10c2d90d0d1793eeeb010d1c83481f5de | |
| parent | fd49b7754c6709a87b5beb5526788bbc1a663965 (diff) | |
| parent | 47c472d605b3c0dce1678b5ea2fe2006961beb9a (diff) | |
Merge pull request #6312 from xmake-io/extract
improve extract
| -rw-r--r-- | xmake/modules/utils/archive/extract.lua | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/xmake/modules/utils/archive/extract.lua b/xmake/modules/utils/archive/extract.lua index edf75eaf8..65d846413 100644 --- a/xmake/modules/utils/archive/extract.lua +++ b/xmake/modules/utils/archive/extract.lua @@ -166,9 +166,7 @@ function _extract_using_7z(archivefile, outputdir, extension, opt) -- https://github.com/xmake-io/xmake-repo/pull/2673 os.tryrm(path.join(outputdir, "*.paxheader")) end - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract archivefile using gzip @@ -210,9 +208,7 @@ function _extract_using_gzip(archivefile, outputdir, extension, opt) -- extract it os.vrunv(program, argv, {curdir = outputdir}) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract archivefile using xz @@ -254,9 +250,7 @@ function _extract_using_xz(archivefile, outputdir, extension, opt) -- extract it os.vrunv(program, argv, {curdir = outputdir}) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract archivefile using zstd @@ -298,9 +292,7 @@ function _extract_using_zstd(archivefile, outputdir, extension, opt) -- extract it os.vrunv(program, argv, {curdir = outputdir}) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract archivefile using unzip @@ -346,9 +338,7 @@ function _extract_using_unzip(archivefile, outputdir, extension, opt) -- extract it os.vrunv(program, argv) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract archivefile using powershell @@ -379,12 +369,9 @@ function _extract_using_powershell(archivefile, outputdir, extension, opt) -- extract it local argv = {"-ExecutionPolicy", "Bypass", "-File", scriptfile, archivefile, outputdir} os.vrunv(powershell.program, argv) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end - -- extract archivefile using bzip2 function _extract_using_bzip2(archivefile, outputdir, extension, opt) @@ -429,9 +416,7 @@ function _extract_using_bzip2(archivefile, outputdir, extension, opt) -- extract it os.vrunv(program, argv, {curdir = outputdir}) - - _extract_uncompressed_tar(outputdir_old, outputdir, opt) - return true + return _extract_uncompressed_tar(outputdir_old, outputdir, opt) end -- extract *.tar after decompress @@ -439,9 +424,15 @@ function _extract_uncompressed_tar(outputdir_old, outputdir, opt) if outputdir_old then local tarfile = find_file("**.tar", outputdir) if tarfile and os.isfile(tarfile) then - return _extract(tarfile, outputdir_old, ".tar", {_extract_using_7z, _extract_using_tar}, opt) + local ok = _extract(tarfile, outputdir_old, ".tar", {_extract_using_7z, _extract_using_tar}, opt) + -- remove the temporary tar file + -- @see https://github.com/xmake-io/xmake/issues/6311 + os.rm(tarfile) + os.rm(outputdir, {emptydirs = true}) + return ok end end + return true end -- extract archive file using extractors |
