diff --git a/.linux/bash/module/pack.sh b/.linux/bash/module/pack.sh index a9f430e..ff8bb3e 100644 --- a/.linux/bash/module/pack.sh +++ b/.linux/bash/module/pack.sh @@ -42,6 +42,11 @@ pack() "zip") _pack_zip "${@}" ;; + "gz") + _pack_gz "${@}" + ;; + "xz") + _pack_xz "${@}" esac # actions on error. @@ -81,6 +86,9 @@ unpack() # unpack file type. local type="${target##*.}" + [[ "${target}" =~ .tar.gz$ ]] && type="tar.gz" + [[ "${target}" =~ .tar.xz$ ]] && type="tar.xz" + # unpack content. case "${type,,}" in "zip") @@ -89,10 +97,10 @@ unpack() "7z") _unpack_7z "${target}" ;; - "tgz"|"gz") + "tgz"|"tar.gz") _unpack_tgz "${target}" ;; - "txz"|"xz") + "txz"|"tar.xz") _unpack_txz "${target}" ;; "tar") @@ -104,6 +112,12 @@ unpack() "rar") _unpack_rar "${target}" ;; + "xz") + _unpack_xz "${target}" + ;; + "gz") + _unpack_gz "${target}" + ;; *) echo -e "${color_yellow}${target}: format not supported.${color_default}" return 2 @@ -152,40 +166,60 @@ _pack_tar() tar -c "${@:2}" | pv -s $(du -csb "${@:2}" | sed -n -e '$p' | awk '{print $1}') > "${1}" } +_pack_gz() +{ + pv "${2}" | gzip -1 > "${1}" +} + +_pack_xz() +{ + pv "${2}" | xz -9e > "${1}" +} + _unpack_zip() { - unzip "${@}" + unzip "${1}" } _unpack_7z() { - 7za x "${@}" + 7za x "${1}" } _unpack_tgz() { - pv "${@}" | gzip -d | tar -xf - + pv "${1}" | gzip -d | tar -xf - } _unpack_txz() { - pv "${@}" | xz -d | tar -xf - + pv "${1}" | xz -d | tar -xf - } _unpack_tar() { - pv "${@}" | tar -xf - + pv "${1}" | tar -xf - } _unpack_iso() { - 7za x "${@}" + 7za x "${1}" } _unpack_rar() { - unrar x "${@}" + unrar x "${1}" +} + +_unpack_gz() +{ + pv "${1}" | gzip -d > "${1%.gz}" +} + +_unpack_xz() +{ + pv "${1}" | xz -d > "${1%.xz}" } # export functions. -export -f pack unpack _pack_tgz _pack_txz _pack_tar _pack_zip _unpack_zip _unpack_7z _unpack_tgz _unpack_txz _unpack_tar _pack_error _unpack_iso _unpack_rar +export -f pack unpack _pack_tgz _pack_txz _pack_tar _pack_zip _unpack_zip _unpack_7z _unpack_tgz _unpack_txz _unpack_tar _pack_error _unpack_iso _unpack_rar _pack_gz _pack_xz _unpack_gz _unpack_xz