#!/bin/bash
IN_FILE="$(realpath ./woof-CE-out-replace.lst)"
out_type=file
case "$out_type" in
directory)
OUT_FILE=arch32_tarball4woof_ce-20200314
mkdir -p "$OUT_FILE"
;;
*)
OUT_FILE=arch32_tarball4woof_ce-20200314.tar.gz
;;
esac
CWD=$(realpath .)
delete_old=yes
OUT_FILE_PATH="$(realpath $OUT_FILE || echo "$OUT_FILE")"
if [ "$delete_old" = yes ]; then
[ -f "$OUT_FILE_PATH" ] && rm "$OUT_FILE_PATH"
else
[ -f "$OUT_FILE_PATH" ] && mv "$OUT_FILE_PATH" "$OUT_FILE_PATH_back$$"
fi
case "$OUT_FILE_PATH" in
*.gz)
PRE_OUT_FILE_PATH="${OUT_FILE_PATH%.gz}"
;;
esac
if [ ! -z "PRE_OUT_FILE_PATH" ]; then
if [ "$delete_old" = yes ]; then
[ -f "$PRE_OUT_FILE_PATH" ] && rm "$PRE_OUT_FILE_PATH"
else
[ -f "$PRE_OUT_FILE_PATH" ] && mv "$PRE_OUT_FILE_PATH" "$PRE_OUT_FILE_PATH_back$$"
fi
fi
function process_output(){
local exit_fn2=$1
#if [ "$exit_fn2" = no ]; then
while read -r a_file a_root rest; do
#read -r a_file a_root rest
cd "$CWD"
a_file="$(echo "$a_file" | sed -e 's%\(^['"'"']\|^["]\)%%' -e 's%\(['"'"']\|["]\)%%')"
[ -z "$a_root" ] && a_root=$CWD
a_root="$(echo "$a_root" | sed -e 's%\(^['"'"']\|^["]\)%%' -e 's%\(['"'"']\|["]\)%%')"
[ -z "$a_root" ] && a_root=$CWD
#a_root="${aroot%/}/"
#[ "$a_file" = EOF ] && break
#[ -z "$a_file" ] && break
a_file2="${a_file%/*}"
a_file2="${a_file2%/}"
[ ! -e "$a_file2" ] && cd "$CWD" && continue
if [ -e "$a_root/$a_file2" ] && [ ! -z "$a_file2" ]; then
cd $a_root
if [ -d "$OUT_FILE_PATH" ]; then
cd $a_root
find . -wholename "./$a_file2" | cpio -pdu "$OUT_FILE_PATH"
else
#a_file="${a_file%/*}"
#a_file="${a_file%/}"
a_root="${a_root%/}"
case "OUT_FILE_PATH" in
*)
if [ -f "$PRE_OUT_FILE_PATH" ]; then
tar -r -f "$PRE_OUT_FILE_PATH" $a_file2
else
tar -cf "$PRE_OUT_FILE_PATH" $a_file2
fi
#find . -name "$a_file" | tar -czvf "$OUT_FILE_PATH"
;;
esac
fi
fi
done
#fi
#exit 0
}
while read -r line; do
echo "$line '' '' ''"
done <$IN_FILE | process_output "$exit_fn"
case "$OUT_FILE_PATH" in
*.gz)
#set +x
gzip -c "$PRE_OUT_FILE_PATH" > "$OUT_FILE_PATH" && rm "$PRE_OUT_FILE_PATH"
;;
esac
Comments