87 lines
2.3 KiB
Bash
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 |