Checkpoint from VS Code for cloud agent session
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
172
tools/core/base_utils.sh
Normal file
172
tools/core/base_utils.sh
Normal file
@@ -0,0 +1,172 @@
|
||||
#!/system/bin/sh
|
||||
# module: base_utils.sh
|
||||
|
||||
echoRgb() {
|
||||
#轉換echo顏色提高可讀性
|
||||
if [[ $2 = 0 ]]; then
|
||||
echo -e "\e[38;5;197m -!$1\e[0m"
|
||||
elif [[ $2 = 1 ]]; then
|
||||
echo -e "\e[38;5;121m -$1\e[0m"
|
||||
elif [[ $2 = 2 ]]; then
|
||||
echo -e "\e[38;5;${rgb_c}m -$1\e[0m"
|
||||
elif [[ $2 = 3 ]]; then
|
||||
echo -e "\e[38;5;${rgb_b}m -$1\e[0m"
|
||||
else
|
||||
echo -e "\e[38;5;${rgb_a}m -$1\e[0m"
|
||||
fi
|
||||
}
|
||||
Set_back_0() {
|
||||
return 0
|
||||
}
|
||||
Set_back_1() {
|
||||
return 1
|
||||
}
|
||||
endtime() {
|
||||
#計算總體切換時長耗費
|
||||
case $1 in
|
||||
1) starttime="${starttime1:-$(date -u "+%s")}" ;;
|
||||
2) starttime="${starttime2:-$(date -u "+%s")}" ;;
|
||||
*) starttime="$(date -u "+%s")" ;;
|
||||
esac
|
||||
endtime="$(date -u "+%s")"
|
||||
duration="$(echo $((endtime - starttime)) | awk '{t=split("60 秒 60 分 24 時 999 天",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}')"
|
||||
[[ $duration != "" ]] && echo " -$2用時:$duration" || echo " -$2用時:0秒"
|
||||
}
|
||||
get_version() {
|
||||
while :; do
|
||||
keycheck
|
||||
case $? in
|
||||
42)
|
||||
[[ $Select_user = true ]] && branch="$1" || branch=true
|
||||
echoRgb "$1" "1"
|
||||
;;
|
||||
41)
|
||||
[[ $Select_user = true ]] && branch="$2" || branch=false
|
||||
echoRgb "$2" "0"
|
||||
;;
|
||||
*)
|
||||
echoRgb "keycheck錯誤" "0"
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
sleep 0.3
|
||||
break
|
||||
done
|
||||
}
|
||||
isBoolean() {
|
||||
nsx="$1"
|
||||
if [[ $1 = 1 ]]; then
|
||||
nsx=true
|
||||
elif [[ $1 = 0 ]]; then
|
||||
nsx=false
|
||||
else
|
||||
echoRgb "$conf_path $2=$1填寫錯誤,正確值1or0" "0"
|
||||
Set_back_1
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
echo_log() {
|
||||
if [[ $? = 0 ]]; then
|
||||
[[ $2 = "" ]] && echoRgb "$1成功" "1"
|
||||
result=0
|
||||
Set_back_0
|
||||
else
|
||||
echoRgb "$1失敗,過世了" "0"
|
||||
notification "$RANDOM" "$name1: $1失敗,過世"
|
||||
result=1
|
||||
Set_back_1
|
||||
fi
|
||||
}
|
||||
kill_Serve() {
|
||||
LOCK_FILE="/tmp/backup_script_$$.lock"
|
||||
if [[ -f $LOCK_FILE ]]; then
|
||||
OLD_PID="$(cat "$LOCK_FILE")"
|
||||
if kill -0 "$OLD_PID" 2>/dev/null; then
|
||||
echo "發現先前的備份程序 (PID=$OLD_PID),將其終止"
|
||||
kill -KILL "$OLD_PID"
|
||||
echo "結束自身,避免重複執行"
|
||||
exit 1
|
||||
else
|
||||
echo "發現 lock 檔但程序已不存在,視為殘留 lock"
|
||||
fi
|
||||
fi
|
||||
echo $$ > "$LOCK_FILE"
|
||||
trap "rm -f '$LOCK_FILE'" EXIT
|
||||
}
|
||||
Show_boottime() {
|
||||
awk -F '.' '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("%d天%d時%d分%d秒",run_days,run_hour,run_minute,run_second)}' /proc/uptime 2>/dev/null
|
||||
}
|
||||
Enter_options() {
|
||||
echoRgb "$1" "2"
|
||||
unset option parameter
|
||||
while true ;do
|
||||
if [[ $option != "" ]]; then
|
||||
case $option in
|
||||
0|1)
|
||||
parameter="$option"
|
||||
[[ $option = 1 ]] && echoRgb "$2" "2" || echoRgb "$3" "2"
|
||||
break ;;
|
||||
*)
|
||||
echoRgb "$option參數錯誤 只能是0或1" "0"
|
||||
read option ;;
|
||||
esac
|
||||
else
|
||||
read option
|
||||
fi
|
||||
done
|
||||
}
|
||||
add_entry() {
|
||||
app_name="$1"
|
||||
package_name="$2"
|
||||
# 檢查是否已經存在同樣的應用名稱
|
||||
if [[ $(echo "$3" | cut -d' ' -f1 | grep -w "^$app_name$") = $app_name ]]; then
|
||||
if [[ $(echo "$3" | cut -d' ' -f2 | grep -w "^$package_name$") != $package_name ]]; then
|
||||
# 如果應用名稱存在但包名不同,則需要添加數字後綴
|
||||
count=1
|
||||
new_app_name="${app_name}_${count}"
|
||||
while echo "$3" | grep -q "$new_app_name"; do
|
||||
count=$((count + 1))
|
||||
new_app_name="${app_name}_${count}"
|
||||
done
|
||||
app_name="$new_app_name"
|
||||
fi
|
||||
fi
|
||||
REPLY="$app_name $package_name"
|
||||
}
|
||||
size() {
|
||||
local b_size get_size
|
||||
varr="$(echo "$1" | bc 2>/dev/null)"
|
||||
if [[ $varr != $1 ]]; then
|
||||
b_size="$(ls -l "$1" 2>/dev/null | awk '{print $5}')"
|
||||
else
|
||||
b_size="$1"
|
||||
fi
|
||||
if [[ $b_size -eq 0 ]]; then
|
||||
get_size="0 bytes"
|
||||
elif [[ $(echo "$b_size < 1024" | bc) -eq 1 ]]; then
|
||||
get_size="${b_size} bytes"
|
||||
elif [[ $(echo "$b_size < 1048576" | bc) -eq 1 ]]; then
|
||||
get_size="$(echo "scale=2; $b_size / 1024" | bc) KB"
|
||||
elif [[ $(echo "$b_size < 1073741824" | bc) -eq 1 ]]; then
|
||||
get_size="$(echo "scale=2; $b_size / 1048576" | bc) MB"
|
||||
else
|
||||
get_size="$(echo "scale=2; $b_size / 1073741824" | bc) GB"
|
||||
fi
|
||||
echo "$get_size"
|
||||
}
|
||||
self_test() {
|
||||
if [[ $(dumpsys deviceidle get charging) = false && $(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+') -le 15 ]]; then
|
||||
echoRgb "電量$(dumpsys battery | awk '/level/{print $2}' | egrep -o '[0-9]+')%太低且未充電\n -為防止備份檔案或是恢復因低電量強制關機導致檔案損毀\n -請連接充電器後備份" "0" && exit 2
|
||||
fi
|
||||
}
|
||||
Validation_file() {
|
||||
MODDIR_NAME="${1%/*}"
|
||||
MODDIR_NAME="${MODDIR_NAME##*/}"
|
||||
FILE_NAME="${1##*/}"
|
||||
echoRgb "校驗$FILE_NAME"
|
||||
case ${FILE_NAME##*.} in
|
||||
zst) zstd -t "$1" 2>/dev/null ;;
|
||||
tar) tar -tf "$1" &>/dev/null ;;
|
||||
esac
|
||||
echo_log "${FILE_NAME##*.}校驗"
|
||||
}
|
||||
Reference in New Issue
Block a user