diff options
Diffstat (limited to 'subr/pkg_fetch_extract.subr')
-rw-r--r-- | subr/pkg_fetch_extract.subr | 27 |
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 |