|
|
|
|
@ -10,28 +10,28 @@ Supported archive formats are: |
|
|
|
|
tlz (tar.lzma), txz (tar.xz), tZ (tar.Z), xz, Z, zip, and zst." |
|
|
|
|
|
|
|
|
|
if [[ $# -lt 2 ]]; then |
|
|
|
|
echo >&2 "$usage" |
|
|
|
|
print -u2 -- "$usage" |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
local ext="$1" |
|
|
|
|
local input="$(realpath "$2")" |
|
|
|
|
local input="${2:a}" |
|
|
|
|
|
|
|
|
|
shift |
|
|
|
|
|
|
|
|
|
if [[ ! -e "$input" ]]; then |
|
|
|
|
echo >&2 "$input not found" |
|
|
|
|
print -u2 -- "$input not found" |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# generate output file name |
|
|
|
|
local output |
|
|
|
|
if [[ $# -gt 1 ]]; then |
|
|
|
|
output="$(basename "${input%/*}")" |
|
|
|
|
output="${input:h:t}" |
|
|
|
|
elif [[ -f "$input" ]]; then |
|
|
|
|
output="$(basename "${input%.[^.]*}")" |
|
|
|
|
output="${input:r:t}" |
|
|
|
|
elif [[ -d "$input" ]]; then |
|
|
|
|
output="$(basename "${input}")" |
|
|
|
|
output="${input:t}" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# if output file exists, generate a random name |
|
|
|
|
@ -44,7 +44,7 @@ tlz (tar.lzma), txz (tar.xz), tZ (tar.Z), xz, Z, zip, and zst." |
|
|
|
|
|
|
|
|
|
# safety check |
|
|
|
|
if [[ -f "$output" ]]; then |
|
|
|
|
echo >&2 "output file '$output' already exists. Aborting" |
|
|
|
|
print -u2 -- "output file '$output' already exists. Aborting" |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
@ -65,6 +65,6 @@ tlz (tar.lzma), txz (tar.xz), tZ (tar.Z), xz, Z, zip, and zst." |
|
|
|
|
Z) compress -vcf "${@}" > "${output}" ;; |
|
|
|
|
zip) zip -rull "${output}" "${@}" ;; |
|
|
|
|
zst) zstd -c -T0 "${@}" > "${output}" ;; |
|
|
|
|
*) echo >&2 "$usage"; return 1 ;; |
|
|
|
|
*) print -u2 -- "$usage"; return 1 ;; |
|
|
|
|
esac |
|
|
|
|
} |
|
|
|
|
|