This repository has been archived on 2024-03-04. You can view files and clone it, but cannot push or open issues or pull requests.
linux/.config/bash/module/convert.sh

52 lines
1.1 KiB
Bash

# Convert between different formats.
# Usage: convert <FROM.gz> <TO.xz>
convert() {
local input="${1}"
local output="${2}"
local from="${input##*.}"
local to="${output##*.}"
# Report no output.
if [[ "${to}" = "" ]]; then
echo -e "${color_bred}no output file/format.${color_default}"
return 1
fi
# Report no input.
if [[ "${from}" = "" ]]; then
echo -e "${color_bred}no input file/format.${color_default}"
return 2
fi
# Process.
case "${from}-${to}" in
"gz-xz"|"tgz-txz")
_convert_gz-xz "${input}" "${output}"
;;
"xz-gz"|"txz-tgz")
_convert_xz-gz "${input}" "${output}"
;;
*)
echo -e "${color_yellow}Conversion ${from}-${to} not supported.${color_default}"
return 3
;;
esac
if [[ $? = 0 ]]; then
echo -e "${color_green}Done.${color_default}"
else
echo -e "${color_bred}There were errors.${color_default}"
fi
}
_convert_gz-xz() {
pv "${1}" | gzip -d | xz -9e > "${2}"
}
_convert_xz-gz() {
pv "${1}" | xz -d | gzip -1 > "${2}"
}
# Export.
export -f convert _convert_gz-xz _convert_xz-gz