summaryrefslogtreecommitdiff
path: root/xmake/modules/utils
diff options
context:
space:
mode:
authorruki <[email protected]>2020-03-20 22:36:46 +0800
committerruki <[email protected]>2020-03-20 09:40:39 +0800
commit66a202c3c1dc599997579078e6d61647e7253a4e (patch)
treea3a8003a54888da656fd1964c20f3fa9786df823 /xmake/modules/utils
parentb01bc45cfb6a2a2c8da72f3b6467605e4d4f259c (diff)
improve to download package
Diffstat (limited to 'xmake/modules/utils')
-rw-r--r--xmake/modules/utils/archive/extension.lua37
-rw-r--r--xmake/modules/utils/archive/extract.lua26
2 files changed, 39 insertions, 24 deletions
diff --git a/xmake/modules/utils/archive/extension.lua b/xmake/modules/utils/archive/extension.lua
new file mode 100644
index 000000000..73a61ec31
--- /dev/null
+++ b/xmake/modules/utils/archive/extension.lua
@@ -0,0 +1,37 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-2020, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file extension.lua
+--
+
+-- imports
+import("core.base.hashset")
+
+-- get the archive extension
+function main(archivefile)
+
+ local extension = ""
+ local filename = path.filename(archivefile)
+ local extensionset = hashset.from({".zip", ".7z", ".gz", ".xz", ".tgz", ".bz2", ".tar", ".tar.gz", ".tar.xz", ".tar.bz2"})
+ local i = filename:lastof(".", true)
+ if i then
+ local p = filename:sub(1, i - 1):lastof(".", true)
+ if p and extensionset:has(filename:sub(p)) then i = p end
+ extension = filename:sub(i)
+ end
+ return extension
+end
diff --git a/xmake/modules/utils/archive/extract.lua b/xmake/modules/utils/archive/extract.lua
index 16e174b31..e1986d303 100644
--- a/xmake/modules/utils/archive/extract.lua
+++ b/xmake/modules/utils/archive/extract.lua
@@ -26,6 +26,7 @@ import("detect.tools.find_7z")
import("detect.tools.find_tar")
import("detect.tools.find_gzip")
import("detect.tools.find_unzip")
+import("extension", {alias = "get_archive_extension"})
-- extract archivefile using tar
function _extract_using_tar(archivefile, outputdir, extension, opt)
@@ -326,29 +327,6 @@ function _extract(archivefile, outputdir, extension, extractors, opt)
return false
end
--- get the extension of the archive file
-function _extension(archivefile, extractors)
-
- -- get archive file name
- local filename = path.filename(archivefile)
-
- -- get extension
- local extension = ""
- local i = filename:lastof(".", true)
- if i then
-
- -- get next extension if exists
- local p = filename:sub(1, i - 1):lastof(".", true)
- if p and extractors[filename:sub(p)] then i = p end
-
- -- ok
- extension = filename:sub(i)
- end
-
- -- ok?
- return extension
-end
-
-- extract archive file
--
-- @param archivefile the archive file. e.g. *.tar.gz, *.zip, *.7z, *.tar.bz2, ..
@@ -379,7 +357,7 @@ function main(archivefile, outputdir, opt)
}
-- get extension
- local extension = _extension(archivefile, extractors)
+ local extension = get_archive_extension(archivefile)
-- extract it
return _extract(archivefile, outputdir, extension, extractors[extension], opt)