{ ... }:
{
  text = ''
    export _unpack_supported=".tar$|.tgz$|.txz$|.tar.gz$|.tar.xz$|.zip$|.iso$|.rar$"

    # Pack files into desired format.
    # All files and directories by default.
    # Usage: pack <TARGET.ext> [FILES]
    function pack() {
      local IFS=$'\n'
      local output="''${1}"
      local targets=("''${@:2}")
      local format="''${output##*.}"
      local name="''${output%.*}"

      # report no output.
      if [[ "''${output}" = "" ]]; then
        help pack
        return 2
      fi

      # report no format.
      if [[ "''${format}" = "" ]]; then
        _error "Could not determine output format."
        help pack
        return 2
      fi

      # All targets by default.
      [[ "''${targets}" = "" ]] && targets=(*)

      case "''${format}" in
        "tgz")
          _pack_tgz "''${output}" "''${targets[@]}"
          ;;
        "txz")
          _pack_txz "''${output}" "''${targets[@]}"
          ;;
        "tar")
          _pack_tar "''${output}" "''${targets[@]}"
          ;;
        "zip")
          _pack_zip "''${output}" "''${targets[@]}"
          ;;
        "gz")
          _pack_gz "''${output}" "''${targets[@]}"
          ;;
        "xz")
          _pack_xz "''${output}" "''${targets[@]}"
          ;;
        "iso")
          _pack_iso "''${output}" "''${targets[@]}"
          ;;
        *)
          _error "''${target}: Format not supported."
          return 2
          ;;
      esac
    }

    # Attempt to unpack.
    # All supported formats by default.
    # Usage: unpack [FILES]
    function unpack() {
      local IFS=$'\n'
      local targets=(''${@})
      [[ "''${targets}" = "" ]] && targets=($(_ls_files | grep -E ''${_unpack_supported}))

      process() {
        # Use full path to file.
        target=''$(realpath "''${target}")

        # Unpack file type.
        local type="''${target##*.}"

        [[ "''${target}" =~ .tar.gz$ ]] && type="tar.gz"
        [[ "''${target}" =~ .tar.xz$ ]] && type="tar.xz"

        # Make a dir for files.
        local dir="''${target%.$type}"; dir="''${dir##*/}"
        mkdir "''${dir}" > /dev/null
        pushd "''${dir}" > /dev/null

        # Unpack content.
        case "''${type,,}" in
          "zip")
            _unpack_zip "''${target}"
            ;;
          "7z")
            _unpack_7z "''${target}"
            ;;
          "tgz"|"tar.gz")
            _unpack_tgz "''${target}"
            ;;
          "txz"|"tar.xz")
            _unpack_txz "''${target}"
            ;;
          "tar")
            _unpack_tar "''${target}"
            ;;
          "iso")
            _unpack_iso "''${target}"
            ;;
          "rar")
            _unpack_rar "''${target}"
            ;;
          "xz")
            _unpack_xz "''${target}"
            ;;
          "gz")
            _unpack_gz "''${target}"
            ;;
          *)
            _error "''${target}: Format not supported."
            return 2
            ;;
        esac

        # Cd back.
        popd > /dev/null
      }

      _iterate_targets process ''${targets[@]}
    }

    function _pack_zip() {
      zip -9 -r "''${@}"
    }

    function _pack_tgz() {
      tar -c "''${@:2}" | pv -s $(/usr/bin/env du -csb "''${@:2}" | sed -n -e '$p' | awk '{print $1}') | gzip -1 > "''${1}"
    }

    function _pack_txz() {
      tar -c "''${@:2}" | pv -s $(/usr/bin/env du -csb "''${@:2}" | sed -n -e '$p' | awk '{print $1}') | xz -9e > "''${1}"
    }

    function _pack_tar() {
      tar -c "''${@:2}" | pv -s $(/usr/bin/env du -csb "''${@:2}" | sed -n -e '$p' | awk '{print $1}') > "''${1}"
    }

    function _pack_gz() {
      pv "''${2}" | gzip -1 > "''${1}"
    }

    function _pack_xz() {
      pv "''${2}" | xz -9e > "''${1}"
    }

    function _pack_iso() {
      local input=("''${@:2}")
      local output="''${1}"
      local args=()

      for arg in ''${input[@]}; do
        [[ -d "''${arg}" ]] || {
          _error "''${arg} is not a directory."
          return 1
        };

        args+=("''${arg}=''${arg}")
      done

      genisoimage -J -r -pad -o "''${output}" -graft-points "''${args[@]}"
    }

    function _unpack_zip() {
      unzip "''${1}"
    }

    function _unpack_7z() {
      7za x "''${1}"
    }

    function _unpack_tgz() {
      pv "''${1}" | gzip -d | tar -xf -
    }

    function _unpack_txz() {
      pv "''${1}" | xz -d | tar -xf -
    }

    function _unpack_tar() {
      pv "''${1}" | tar -xf -
    }

    function _unpack_iso() {
      7za x "''${1}"
    }

    function _unpack_rar() {
      unrar x "''${1}"
    }

    function _unpack_gz() {
      pv "''${1}" | gzip -d > "''${1%.gz}"
    }

    function _unpack_xz() {
      pv "''${1}" | xz -d > "''${1%.xz}"
    }
  '';
}