47 lines
1.4 KiB
Bash

#!/bin/bash
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>.
#Copyright 2021 rexy712
extr_register_module 'zstd'
extr_register_extensions 'zstd' '\.zstd$'
function do_zstd(){
local flags=()
if [ "$verbosity" == 0 ];then
flags+=("--quiet")
elif [ "$verbosity" == 2 ];then
flags+=("-v")
fi
if [ -n "$overwrite" ];then
flags+=("-f")
fi
local fileout=
if [ -n "$outloc" ];then
fileout="${outloc}/$(basename "${file:0:-5}")"
else
fileout="${PWD}/$(basename "${file:0:-5}")"
fi
if [ -e "${fileout}" ] && [ -z "$overwrite" ];then
echo "Could not decompress $file; output file exists" >&2
return 1
fi
if [ ! -r "${file}" ] || [ ! -w "$(dirname "${fileout}")" ];then
echo "${file} decompress failed; permission denied"
return 1
fi
unzstd -dk "${flags[@]}" "${passthrough_args[@]}" "$file" --stdout > "${fileout}"
}