Files
2026-07-07 15:23:39 +08:00

87 lines
2.3 KiB
Bash

#!/bin/bash
# shellcheck disable=SC2155
if ! type "include" > /dev/null 2>&1; then
include() {
. "$(cd "$(dirname "$1")" && pwd)/${2}";
};
fi
include "${BASH_SOURCE[0]}" ../pragma_once.bash
if ! pragma_once ${BASH_SOURCE[0]}; then return 0; fi
include "${BASH_SOURCE[0]}" ./global_rely/export.bash
# shellcheck source=./global_rely/export.bash
extract(){
local suffix=$1
local zip_file_path=$2
local dest_dir=$3
case "$suffix" in
"tar.gz" | "tgz")
exec_record_fast_fail "tar -xzf $zip_file_path -C $dest_dir"
;;
"tar.bz2" | "tbz")
exec_record_fast_fail "tar -xjf $zip_file_path -C $dest_dir"
;;
"tar.xz" | "txz")
exec_record_fast_fail "tar -xJf $zip_file_path -C $dest_dir"
;;
"zip")
exec_record_fast_fail "unzip $zip_file_path -d $dest_dir"
;;
"gz")
exec_record_fast_fail "gunzip -c $zip_file_path > $dest_dir"
;;
"bz2")
exec_record_fast_fail "bunzip2 -c $zip_file_path > $dest_dir"
;;
*)
echo "Unsupported file format: $suffix"
exit 124
;;
esac
}
get_suffix() {
local -n ret=$1
local filename="$(basename "$2")"
local reversed_filename=$(echo "$filename" | rev)
local first_extension=$(echo "$reversed_filename" | cut -d'.' -f1 | rev)
local second_extension=$(echo "$reversed_filename" | cut -d'.' -f2 | rev)
if [ -z "$second_extension" ]; then
ret=$first_extension
else
if [[ "$second_extension" == "tar" ]]; then
if [[ "$first_extension" == "gz" ]]; then
ret="tar.gz"
elif [[ "$first_extension" == "bz2" ]]; then
ret="tar.bz2"
elif [[ "$first_extension" == "xz" ]]; then
ret="tar.xz"
else
echo "tar but not ok first_extension:$first_extension second_extension:$second_extension"
exit 101;
fi
else
# echo "two . but not tar first_extension:$first_extension second_extension:$second_extension"
# exit 102
ret=$first_extension
fi
fi
}
package_xz() {
local path=$1
local dir_path=$(dirname ${path})
local name=$(basename ${path})
# echo "$path"
# echo "$dir_path"
# echo "$name"
cd $dir_path
size=$(du -sb "$name" | awk '{print $1}')
#tar --dereference -cf - "$name" | pv -s $size | xz -T0 -3 > "$name.tar.xz"
exec_record_fast_fail "tar --dereference -cf - \"$name\" | pv -s $size | xz -T0 -3 > \"$name.tar.xz\""
}
return 0