summaryrefslogtreecommitdiffhomepage
path: root/subr/pkg_fetch_extract.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/pkg_fetch_extract.subr')
-rw-r--r--subr/pkg_fetch_extract.subr27
1 files changed, 27 insertions, 0 deletions
diff --git a/subr/pkg_fetch_extract.subr b/subr/pkg_fetch_extract.subr
new file mode 100644
index 00000000..71155b44
--- /dev/null
+++ b/subr/pkg_fetch_extract.subr
@@ -0,0 +1,27 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkg_fetch_extract() {
+ if [ -n "${PKG_URL}" ]\
+ && [ "${PKG_URL_TYPE:-wget}" = wget ]; then
+ build_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}";
+ if [ "${PKG_FNAME##*.tar.}" = "bz2" ]; then
+ bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ elif [ "${PKG_FNAME##*.tar.}" = "gz" ]; then
+ gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ elif [ "${PKG_FNAME##*.tar.}" = "xz" ]; then
+ xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ elif [ "${PKG_FNAME##*.t}" = "bz2" ]; then
+ bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ elif [ "${PKG_FNAME##*.t}" = "gz" ]; then
+ gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ elif [ "${PKG_FNAME##*.t}" = "xz" ]; then
+ xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -;
+ else
+ tar -C "${PKG_BASE_DIR}" -xf "${DLCACHEDIR}/${PKG_FNAME}";
+ fi;
+ fi;
+};
+
+# vim:filetype=sh