app-starlock/pre_build.sh

111 lines
2.9 KiB
Bash
Raw Normal View History

2024-06-21 10:36:10 +08:00
#!/bin/bash
# 废弃 api 检测脚本+项目编译脚本
# 首次使用记得安装jq brew install jq
###############################################################
############## 正常情况下只需要修改配置,不需要修改代码 ###############
###############################################################
2024-06-21 10:36:10 +08:00
# 设置
2024-07-23 17:40:25 +08:00
# environment 改为命令行参数
environment=$1
if [ -z "$environment" ]; then
echo "错误: 请传入环境参数"
exit 1
fi
2024-07-23 17:40:25 +08:00
# main_file 根据环境选择
case $environment in
dev)
2024-07-23 17:40:25 +08:00
main_file="lib/main_dev.dart"
api_prefix='https://dev.lock.star-lock.cn'
;;
pre)
2024-07-23 17:40:25 +08:00
main_file="lib/main_pre.dart"
api_prefix='https://pre.lock.star-lock.cn'
;;
sky)
main_file="lib/main_sky_lite.dart"
api_prefix='https://lock.skychip.top'
;;
xhj)
main_file="lib/main_xhj_lite.dart"
api_prefix='https://lock.xhjcn.ltd'
;;
2024-07-23 18:02:47 +08:00
local)
main_file="lib/main_local.dart"
2024-08-08 11:00:03 +08:00
api_prefix='http://zhou.lock.star-lock.cn'
2024-07-23 18:02:47 +08:00
;;
*)
2024-07-23 17:40:25 +08:00
echo "错误: flavor[$environment] mainFile not found"
exit 1
;;
esac
2024-07-23 17:40:25 +08:00
# 版本改为从 pubspec.yaml 的 version 字段获取
version_string=$(grep version: pubspec.yaml | awk '{print $2}' | tr -d "'")
# 读取到的版本号为 1.0.69+2024070302 需要去掉 +2024070302
version_string=${version_string%%+*}
echo "版本号为: $version_string"
file_path="lib/network/api.dart"
echo "API 前缀为: $api_prefix"
response=$(curl -s -X POST -d "version=$version_string" "$api_prefix/api/app/checkAppBuildVersion")
error_code=$(echo $response | jq '.errorCode')
# 判断是否成功
if [ "$error_code" != "0" ]; then
error_msg=$(echo $response | jq -r '.errorMsg')
echo "失败:$error_msg"
exit 1
fi
urls=$(curl -s -X POST -d "version=$version_string" "$api_prefix/api/app/getDeprecatedApiList" | jq -r '.data[].url')
2024-06-21 10:36:10 +08:00
echo "* 成功获取废弃 api 数据"
# 解析 api 文件数据
2024-06-21 10:36:10 +08:00
string_array=()
while IFS= read -r line; do
string_array+=("$line")
done < <(egrep -o "'[^']*'" "$file_path")
echo "* 解析 api 文件数据,开始对比"
2024-07-23 18:02:47 +08:00
# 进度条初始化
total_urls=$(echo "$urls" | wc -l | tr -d ' ')
current_url=0
2024-07-23 17:40:25 +08:00
2024-07-23 18:02:47 +08:00
2024-07-23 18:02:47 +08:00
# 检查每个废弃的API URL
2024-06-21 10:36:10 +08:00
for url in $urls; do
#删除${string_array[@]}中的单引号
string_array=(${string_array[@]//\'/})
for element in "${string_array[@]}"; do
if [[ "$element" == "$url" ]]; then
echo "错误: 存在废弃 api: $url"
exit 1
fi
done
# 更新进度条
let current_url++
let progress=(current_url*100/total_urls)
printf "\r进度: [%-50s] %d%%" $(printf '%*s' $((progress/2)) | tr ' ' '#') $progress
2024-06-21 10:36:10 +08:00
done
# 新的输出从新行开始
echo -e "\n* 没有发现废弃 API开始编译"
# 编译命令
2024-07-23 17:40:25 +08:00
#flutter clean && flutter pub get
#flutter build apk --flavor $environment -t $main_file
#flutter build ios --flavor $environment -t $main_file
2024-08-20 11:01:57 +08:00
#flutter build appbundle --flavor $environment -t $main_file