#!/bin/bash
# ./autobuild.sh [user|u8m|uoffline|oob128|z1|4part|leakcheck|autoota|autootacli|obu|cm|ct] [debug|release] [clean]
+# ./autobuild.sh versions # 查看所有项目版本
+# ./autobuild.sh update-version <project> <version> # 更新项目版本
#
# 通常三个参数可以用,每个是可选项,且三个参数输入的前后顺序可以随意。
# cm, ChinaMobile 移动入库软件版本
# ct, ChinaTelecom 电信入库软件版本
#
+# 版本管理功能:
+# versions, 查看所有项目的版本信息
+# update-version <project> <version>, 更新指定项目的版本号
+#
version=HEAD
DATE=$(date +%Y%m%d_%H%M%S)
DEFAULT_RECOVERY_NAME=$DEFAULT_APPLICATION_NAME-r
DEFAULT_SSB_NAME=$DEFAULT_APPLICATION_NAME-ssb
+# 各项目独立版本管理
+declare -A PROJECT_VERSIONS
+
+# 从配置文件加载版本信息
+load_versions_from_config() {
+ local config_file="$HOMEDIR/project_versions.conf"
+ if [ -f "$config_file" ]; then
+ while IFS='=' read -r project version; do
+ # 跳过注释行和空行
+ if [[ ! "$project" =~ ^[[:space:]]*# ]] && [[ -n "$project" ]]; then
+ PROJECT_VERSIONS["$project"]="$version"
+ fi
+ done < "$config_file"
+ echo "Loaded versions from $config_file"
+ else
+ echo "Warning: Config file $config_file not found, using default versions"
+ # 使用默认版本
+ PROJECT_VERSIONS["fd230"]="1.3.106"
+ PROJECT_VERSIONS["user"]="1.2.85"
+ PROJECT_VERSIONS["fd230_user"]="1.2.90"
+ PROJECT_VERSIONS["xts"]="1.1.50"
+ PROJECT_VERSIONS["u8"]="1.3.20"
+ PROJECT_VERSIONS["w9"]="1.2.75"
+ PROJECT_VERSIONS["lt22"]="1.3.15"
+ PROJECT_VERSIONS["n9"]="1.2.60"
+ PROJECT_VERSIONS["ln"]="1.3.30"
+ PROJECT_VERSIONS["u8m"]="1.2.40"
+ PROJECT_VERSIONS["uoffline"]="1.2.45"
+ PROJECT_VERSIONS["oob128"]="1.3.10"
+ PROJECT_VERSIONS["z1"]="1.1.80"
+ PROJECT_VERSIONS["4part"]="1.3.25"
+ PROJECT_VERSIONS["leakcheck"]="1.2.70"
+ PROJECT_VERSIONS["autoota"]="1.3.50"
+ PROJECT_VERSIONS["autootacli"]="1.1.30"
+ PROJECT_VERSIONS["obu"]="1.2.35"
+ PROJECT_VERSIONS["cm"]="1.3.40"
+ PROJECT_VERSIONS["ct"]="1.3.35"
+ fi
+}
+
+# 保存版本到配置文件
+save_versions_to_config() {
+ local config_file="$HOMEDIR/project_versions.conf"
+ echo "# 项目版本配置文件" > "$config_file"
+ echo "# 格式: PROJECT_NAME=VERSION" >> "$config_file"
+ echo "# 示例: fd230=1.3.106" >> "$config_file"
+ echo "" >> "$config_file"
+ echo "# 默认项目版本" >> "$config_file"
+ for project in "${!PROJECT_VERSIONS[@]}"; do
+ echo "$project=${PROJECT_VERSIONS[$project]}" >> "$config_file"
+ done
+ echo "Versions saved to $config_file"
+}
+
+# 默认版本
DEFAULT_CUSTOM_FW_VERSION=1.3.106
HSO_BUILD=nohso
TARGET_DATABASE_PATH=code/sdk/output/brandy/database_evb
CLEAN=
BUILD_NAME=_FD230
+CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION
checkarguments()
{
if [ "$1" == "clean" ]
RELEASE_BUILD=release
fi
+# 设置项目版本
+if [ -n "$1" ] && [ "$1" != "clean" ] && [ "$1" != "debug" ] && [ "$1" != "release" ]
+then
+ if [ -n "${PROJECT_VERSIONS[$1]}" ]
+ then
+ CURRENT_PROJECT_VERSION=${PROJECT_VERSIONS[$1]}
+ echo "Setting version for project $1: $CURRENT_PROJECT_VERSION"
+ else
+ echo "Warning: No version defined for project $1, using default version: $DEFAULT_CUSTOM_FW_VERSION"
+ CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION
+ fi
+fi
+
if [ "$1" == "user" ]
then
TARGET_PACK_NAME=pack_brandy_native_js_user
resfile_path=$HOMEDIR/code/sdk/output/package/brandy/$TARGET_PACK_NAME/$APPLICATION_NAME/file.bin
- filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${DEFAULT_CUSTOM_FW_VERSION}_${DATE}_${USER}.fwpkg
- releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${DEFAULT_CUSTOM_FW_VERSION}_${DATE}${BUILD_NAME}
+ filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${CURRENT_PROJECT_VERSION}_${DATE}_${USER}.fwpkg
+ releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${CURRENT_PROJECT_VERSION}_${DATE}${BUILD_NAME}
packsource=$HOMEDIR/code/sdk/tools/pkg/fwpkg/brandy/upload_app.fwpkg
echo do release copy
mkdir -p $releasedir/bin
{
cd $HOMEDIR/code/sdk/
- echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1
+ echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1
if [ "$HSO_BUILD" == "hso" ]
then
- ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1
+ ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1
else
- ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1
+ ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1
fi
#./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1
ret_code=$?
cd $HOMEDIR
}
+# 版本管理功能
+show_versions() {
+ echo "=== 项目版本管理 ==="
+ echo "当前项目: $TARGET_PACK_NAME"
+ echo "当前版本: $CURRENT_PROJECT_VERSION"
+ echo "版本数量: ${#PROJECT_VERSIONS[@]}"
+ echo ""
+ echo "所有项目版本:"
+ for project in "${!PROJECT_VERSIONS[@]}"; do
+ echo " $project: ${PROJECT_VERSIONS[$project]}"
+ done
+ echo ""
+}
+
+# 检查是否是版本管理命令
+if [ "$1" == "versions" ] || [ "$1" == "version" ] || [ "$1" == "v" ]
+then
+ load_versions_from_config
+ show_versions
+ exit 0
+fi
+
+# 检查是否是更新版本命令
+if [ "$1" == "update-version" ] && [ -n "$2" ] && [ -n "$3" ]
+then
+ # 先加载版本配置
+ load_versions_from_config
+ project_name=$2
+ new_version=$3
+ if [ -n "${PROJECT_VERSIONS[$project_name]}" ]
+ then
+ old_version=${PROJECT_VERSIONS[$project_name]}
+ PROJECT_VERSIONS[$project_name]=$new_version
+ echo "Updated $project_name version: $old_version -> $new_version"
+ # 保存到配置文件
+ save_versions_to_config
+ else
+ echo "Error: Project $project_name not found"
+ echo "Available projects:"
+ for project in "${!PROJECT_VERSIONS[@]}"; do
+ echo " $project"
+ done
+ exit 1
+ fi
+ exit 0
+fi
+
+# 加载版本配置
+load_versions_from_config
+
checkarguments $1
checkarguments $2
checkarguments $3
checkarguments $4
+
+# 显示当前编译信息
+echo "=== 编译信息 ==="
+echo "项目: $TARGET_PACK_NAME"
+echo "版本: $CURRENT_PROJECT_VERSION"
+echo "构建类型: $RELEASE_BUILD"
if [ "$CLEAN" == "-c" ]
then
-echo $0 $TARGET_PACK_NAME $RELEASE_BUILD clean
+echo "清理模式: 是"
else
-echo $0 $TARGET_PACK_NAME $RELEASE_BUILD
+echo "清理模式: 否"
fi
+echo "=================="
# read -n 1 -p "Press any key to continue..."