forked from OpenAtom-Linyaps/linyaps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease.bash
More file actions
executable file
·65 lines (51 loc) · 1.84 KB
/
release.bash
File metadata and controls
executable file
·65 lines (51 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: LGPL-3.0-or-later
set -e
# 定义 CMakeLists.txt 文件路径
CMAKE_FILE="CMakeLists.txt"
# 检查文件是否存在
if [[ ! -f "$CMAKE_FILE" ]]; then
echo "错误: $CMAKE_FILE 文件不存在!"
exit 1
fi
# 提取当前的 VERSION 字段
CURRENT_VERSION=$(tr -d '\n' < "$CMAKE_FILE" | grep -oP 'project\(\s*\w+\s*VERSION\s*\K[0-9.]+')
# 检查是否找到 VERSION
if [[ -z "$CURRENT_VERSION" ]]; then
echo "错误: 未找到 VERSION 字段!"
exit 1
fi
echo "当前的 VERSION: $CURRENT_VERSION"
# 提示输入新版本号
read -p "请输入新版本号 (留空则自动递增小版本号): " NEW_VERSION
# 如果未输入新版本号,则自动递增小版本号
if [[ -z "$NEW_VERSION" ]]; then
IFS='.' read -r -a VERSION_PARTS <<<"$CURRENT_VERSION"
LAST_PART=${VERSION_PARTS[${#VERSION_PARTS[@]} - 1]}
NEW_LAST_PART=$((LAST_PART + 1))
VERSION_PARTS[${#VERSION_PARTS[@]} - 1]=$NEW_LAST_PART
NEW_VERSION=$(
IFS='.'
echo "${VERSION_PARTS[*]}"
)
echo "自动递增小版本号: $NEW_VERSION"
fi
# 更新 CMakeLists.txt 文件中的 VERSION 字段
sed -E -i "/project\s*\(/,/\)/{
s/(VERSION\s+)[0-9]+\.[0-9]+\.[0-9]+/\1${NEW_VERSION}/
}" "$CMAKE_FILE"
# 检查是否更新成功
UPDATED_VERSION=$(tr -d '\n' < "$CMAKE_FILE" | grep -oP 'project\(\s*\w+\s*VERSION\s*\K[0-9.]+')
if [[ "$UPDATED_VERSION" != "$NEW_VERSION" ]]; then
echo "错误: 更新 VERSION 字段失败!"
exit 1
fi
echo "更新成功! 新的 VERSION: $UPDATED_VERSION"
# 提交更改到 Git
git add "$CMAKE_FILE"
git commit -m "release $UPDATED_VERSION"
# 打 Git 标签
TAG_NAME="$UPDATED_VERSION"
git tag "$TAG_NAME" -m "release $UPDATED_VERSION"