From 5ba7e7a9a1cfa2c57f7a5c7eb56b0426a7cdd463 Mon Sep 17 00:00:00 2001 From: yiyi Date: Sun, 5 Apr 2026 12:04:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=94=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E7=AE=97=E6=B3=95=EF=BC=8C=E5=A2=9E=E5=8A=A0Applist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GrabBagPrj/AppList.md | 23 ++++ GrabBagPrj/update_releaseVersion.sh | 195 ++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100644 GrabBagPrj/AppList.md create mode 100644 GrabBagPrj/update_releaseVersion.sh diff --git a/GrabBagPrj/AppList.md b/GrabBagPrj/AppList.md new file mode 100644 index 0000000..e09a778 --- /dev/null +++ b/GrabBagPrj/AppList.md @@ -0,0 +1,23 @@ +# 应用列表及说明 + +## 软件对应关系表 + +| 项目名称 | App名称 | 版本 | +|:--------|:---------|:------------| +| 自动拆包 | GrabBag | 1.3.6.2 | +| 皮带撕裂 | BeltTearingServer | 2.0.8.1 | +| 焊接 | LapWeld | 1.0.0.1 | +| 工件定位 | Workpiece | 1.0.3.0 | +| 颗粒尺寸检测 | ParticleSize | 1.0.0.0 | +| 双目标记检测 | BinocularMarkServer | 1.0.0.4 | +| 工件项目 | WorkpieceProject | 无 | +| 铁路隧道槽道测量 | TunnelChannel | 1.0.0.3 | +| 车轮拱高测量 | WheelMeasure | 1.0.2.1 | +| 螺杆定位 | ScrewPosition | 1.0.0.1 | +| 包裹拆线位置定位 | BagThreadPosition | 1.0.0.4 | +| 工件孔定位 | WorkpieceHole | 1.0.3.0 | +| 定子定位 | StatorPosition | 1.0.0.1 | +| 孔洞检测 | HoleDetection | 1.1.3.1 | +| 坑孔定位 | HolePitPosition | 无 | +| 棒材定位 | RodAndBarPosition | 1.0.2.1 | + diff --git a/GrabBagPrj/update_releaseVersion.sh b/GrabBagPrj/update_releaseVersion.sh new file mode 100644 index 0000000..a1f19d9 --- /dev/null +++ b/GrabBagPrj/update_releaseVersion.sh @@ -0,0 +1,195 @@ +#!/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 "=========================================="