196 lines
6.8 KiB
Bash
196 lines
6.8 KiB
Bash
#!/bin/bash
|
|
|
|
# 更新应用列表及说明.md中的版本信息
|
|
# 用法: ./updateVersion.sh <项目名称>
|
|
# 示例: ./updateVersion.sh GrabBag
|
|
|
|
# 定义项目与Version.h文件的映射关系
|
|
declare -A PROJECT_VERSION_FILES=(
|
|
["GrabBag"]="App/GrabBag/GrabBagApp/Version.h"
|
|
["BeltTearing"]="App/BeltTearing/BeltTearingApp/Version.h"
|
|
["LapWeld"]="App/LapWeld/LapWeldApp/Version.h"
|
|
["Workpiece"]="App/Workpiece/WorkpieceApp/Version.h"
|
|
["ParticleSize"]="App/ParticleSize/ParticleSizeApp/Version.h"
|
|
["BinocularMark"]="App/BinocularMark/BinocularMarkApp/Version.h"
|
|
["WorkpieceProject"]="App/WorkpieceProject/WorkpiecePositionApp/Version.h"
|
|
["TunnelChannel"]="App/TunnelChannel/TunnelChannelApp/Version.h"
|
|
["WheelMeasure"]="App/WheelMeasure/WheelMeasureApp/Version.h"
|
|
["ScrewPosition"]="App/ScrewPosition/ScrewPositionApp/Version.h"
|
|
["BagThreadPosition"]="App/BagThreadPosition/BagThreadPositionApp/Version.h"
|
|
["WorkpieceHole"]="App/WorkpieceHole/WorkpieceHoleApp/Version.h"
|
|
["StatorPosition"]="App/StatorPosition/StatorPositionApp/Version.h"
|
|
["HoleDetection"]="App/HoleDetection/HoleDetectionApp/Version.h"
|
|
["HolePitPosition"]="App/HolePitPosition/HolePitPositionApp/Version.h"
|
|
["RodAndBarPosition"]="App/RodAndBarPosition/RodAndBarPositionApp/Version.h"
|
|
)
|
|
|
|
# 定义项目与版本宏的映射关系
|
|
declare -A PROJECT_VERSION_MACROS=(
|
|
["GrabBag"]="GRABBAG"
|
|
["BeltTearing"]="BELT_TEARING_APP"
|
|
["LapWeld"]="LAPWELD"
|
|
["Workpiece"]="WORKPIECE"
|
|
["ParticleSize"]="PARTICLESIZE"
|
|
["BinocularMark"]="BINOCULARMARK"
|
|
["WorkpieceProject"]="WORKPIECE_POSITION"
|
|
["TunnelChannel"]="TUNNELCHANNEL"
|
|
["WheelMeasure"]="WHEELMEASURE"
|
|
["ScrewPosition"]="SCREWPOSITION"
|
|
["BagThreadPosition"]="BAGTHREADPOSITION"
|
|
["WorkpieceHole"]="WORKPIECEHOLE"
|
|
["StatorPosition"]="STATORPOSITION"
|
|
["HoleDetection"]="HOLEDETECTION"
|
|
["HolePitPosition"]="HOLEPITPOSITION"
|
|
["RodAndBarPosition"]="RODANDBARPOSITION"
|
|
)
|
|
|
|
# 定义项目与Publish包名称的映射关系
|
|
declare -A PROJECT_PUBLISH_NAMES=(
|
|
["GrabBag"]="GrabBag"
|
|
["BeltTearing"]="BeltTearingServer"
|
|
["LapWeld"]="LapWeld"
|
|
["Workpiece"]="Workpiece"
|
|
["ParticleSize"]="ParticleSize"
|
|
["BinocularMark"]="BinocularMarkServer"
|
|
["WorkpieceProject"]="WorkpieceProject"
|
|
["TunnelChannel"]="TunnelChannel"
|
|
["WheelMeasure"]="WheelMeasure"
|
|
["ScrewPosition"]="ScrewPosition"
|
|
["BagThreadPosition"]="BagThreadPosition"
|
|
["WorkpieceHole"]="WorkpieceHole"
|
|
["StatorPosition"]="StatorPosition"
|
|
["HoleDetection"]="HoleDetection"
|
|
["HolePitPosition"]="HolePitPosition"
|
|
["RodAndBarPosition"]="RodAndBarPosition"
|
|
)
|
|
|
|
# 定义项目与中文名称的映射关系
|
|
declare -A PROJECT_CHINESE_NAMES=(
|
|
["GrabBag"]="自动拆包"
|
|
["BeltTearing"]="皮带撕裂"
|
|
["LapWeld"]="焊接"
|
|
["Workpiece"]="工件定位"
|
|
["ParticleSize"]="颗粒尺寸检测"
|
|
["BinocularMark"]="双目标记检测"
|
|
["WorkpieceProject"]="工件项目"
|
|
["TunnelChannel"]="铁路隧道槽道测量"
|
|
["WheelMeasure"]="车轮拱高测量"
|
|
["ScrewPosition"]="螺杆定位"
|
|
["BagThreadPosition"]="包裹拆线位置定位"
|
|
["WorkpieceHole"]="工件孔定位"
|
|
["StatorPosition"]="定子定位"
|
|
["HoleDetection"]="孔洞检测"
|
|
["HolePitPosition"]="坑孔定位"
|
|
["RodAndBarPosition"]="棒材定位"
|
|
)
|
|
|
|
# 应用列表文件路径
|
|
APP_LIST_FILE="应用列表及说明.md"
|
|
|
|
# 获取脚本所在目录
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# 检查参数
|
|
if [ $# -eq 0 ]; then
|
|
echo "用法: $0 <项目名称>"
|
|
echo "示例: $0 GrabBag"
|
|
echo ""
|
|
echo "可用项目名称:"
|
|
for project in "${!PROJECT_VERSION_FILES[@]}"; do
|
|
echo " - $project (${PROJECT_CHINESE_NAMES[$project]})"
|
|
done
|
|
exit 1
|
|
fi
|
|
|
|
PROJECT_NAME=$1
|
|
|
|
# 检查项目是否存在
|
|
if [ -z "${PROJECT_VERSION_FILES[$PROJECT_NAME]}" ]; then
|
|
echo "错误: 未知的项目名称 '$PROJECT_NAME'"
|
|
echo "可用项目名称:"
|
|
for project in "${!PROJECT_VERSION_FILES[@]}"; do
|
|
echo " - $project (${PROJECT_CHINESE_NAMES[$project]})"
|
|
done
|
|
exit 1
|
|
fi
|
|
|
|
# 获取Version.h文件路径
|
|
VERSION_FILE="../${PROJECT_VERSION_FILES[$PROJECT_NAME]}"
|
|
VERSION_MACRO="${PROJECT_VERSION_MACROS[$PROJECT_NAME]}"
|
|
PUBLISH_NAME="${PROJECT_PUBLISH_NAMES[$PROJECT_NAME]}"
|
|
CHINESE_NAME="${PROJECT_CHINESE_NAMES[$PROJECT_NAME]}"
|
|
|
|
echo "=========================================="
|
|
echo "更新项目版本信息"
|
|
echo "=========================================="
|
|
echo "项目名称: $PROJECT_NAME ($CHINESE_NAME)"
|
|
echo "发布名称: $PUBLISH_NAME"
|
|
echo "Version.h: $VERSION_FILE"
|
|
echo "=========================================="
|
|
|
|
# 检查Version.h文件是否存在
|
|
if [ ! -f "$VERSION_FILE" ]; then
|
|
echo "错误: Version.h 文件不存在: $VERSION_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 读取版本信息
|
|
# 尝试多种可能的宏定义格式
|
|
VERSION_STRING=""
|
|
BUILD_STRING=""
|
|
|
|
# 尝试读取版本号
|
|
VERSION_STRING=$(grep "#define ${VERSION_MACRO}_VERSION_STRING" "$VERSION_FILE" | sed 's/.*"\(.*\)".*/\1/' | head -1)
|
|
if [ -z "$VERSION_STRING" ]; then
|
|
# 尝试另一种格式
|
|
VERSION_STRING=$(grep "#define ${VERSION_MACRO}_APP_VERSION_STRING" "$VERSION_FILE" | sed 's/.*"\(.*\)".*/\1/' | head -1)
|
|
fi
|
|
|
|
# 尝试读取构建号
|
|
BUILD_STRING=$(grep "#define ${VERSION_MACRO}_BUILD_STRING" "$VERSION_FILE" | sed 's/.*"\(.*\)".*/\1/' | head -1)
|
|
if [ -z "$BUILD_STRING" ]; then
|
|
# 尝试另一种格式
|
|
BUILD_STRING=$(grep "#define ${VERSION_MACRO}_APP_VERSION_BUILD" "$VERSION_FILE" | sed 's/.*"\(.*\)".*/\1/' | head -1)
|
|
fi
|
|
|
|
# 如果仍然无法读取,使用默认值
|
|
if [ -z "$VERSION_STRING" ]; then
|
|
VERSION_STRING="1.0.0"
|
|
echo "警告: 无法读取版本号,使用默认值: $VERSION_STRING"
|
|
else
|
|
echo "版本号: $VERSION_STRING"
|
|
fi
|
|
|
|
if [ -z "$BUILD_STRING" ]; then
|
|
BUILD_STRING="1"
|
|
echo "警告: 无法读取构建号,使用默认值: $BUILD_STRING"
|
|
else
|
|
echo "构建号: $BUILD_STRING"
|
|
fi
|
|
|
|
# 组合完整版本号
|
|
FULL_VERSION="${VERSION_STRING}.${BUILD_STRING}"
|
|
echo "完整版本: $FULL_VERSION"
|
|
echo "=========================================="
|
|
|
|
# 检查应用列表文件是否存在
|
|
if [ ! -f "$APP_LIST_FILE" ]; then
|
|
echo "错误: 应用列表文件不存在: $APP_LIST_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 更新应用列表文件中的版本信息
|
|
# 查找对应行并更新版本号
|
|
if grep -q "| ${CHINESE_NAME} | ${PUBLISH_NAME} |" "$APP_LIST_FILE"; then
|
|
# 使用sed更新版本号
|
|
sed -i "s/| ${CHINESE_NAME} | ${PUBLISH_NAME} | .* |/| ${CHINESE_NAME} | ${PUBLISH_NAME} | ${FULL_VERSION} |/" "$APP_LIST_FILE"
|
|
echo "已更新 $CHINESE_NAME 的版本信息为 $FULL_VERSION"
|
|
else
|
|
echo "警告: 在应用列表中未找到项目 '$CHINESE_NAME' ($PUBLISH_NAME)"
|
|
fi
|
|
|
|
echo "=========================================="
|
|
echo "版本信息更新完成!"
|
|
echo "=========================================="
|