1+ #! /usr/bin/env bash
2+ # 根据参数生成版本号,并推送标签到远程仓库 | Automatically generate version number and push tags to remote repository
3+
4+ # 设置定量 | Quantities
5+ # # 当前脚本所在目录 | Current Script Directory
6+ SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
7+ # # 仓库目录 | Repository Directory
8+ REPO_DIR=" $( dirname " $SCRIPT_DIR " ) "
9+ # # 当前语言 | Current Language
10+ CURRENT_LANG=0 # ## 0: en-US, 1: zh-Hans-CN
11+
12+ # 语言检测 | Language Detection
13+ if [ $( echo ${LANG/ _/ -} | grep -Ei " \\ b(zh|cn)\\ b" ) ]; then CURRENT_LANG=1; fi
14+
15+ # 本地化 | Localization
16+ recho () {
17+ if [ $CURRENT_LANG == 1 ]; then
18+ # # zh-Hans-CN
19+ echo $1 ;
20+ else
21+ # # en-US
22+ echo $2 ;
23+ fi
24+ }
25+
26+ # 参数解析 | Argument Parsing
27+ version=" "
28+ while [[ $# -gt 0 ]]; do
29+ case " $1 " in
30+ -v|--version)
31+ version=" $2 "
32+ shift 2
33+ ;;
34+ * )
35+ recho " 错误: 未知参数 $1 " " Error: Unknown argument $1 "
36+ exit 1
37+ ;;
38+ esac
39+ done
40+
41+ # 版本号验证函数 | Version Validation Function
42+ validate_version () {
43+ if [[ ! " $1 " =~ ^[0-9]+\. [0-9]+\. [0-9]+$ ]]; then
44+ recho " 错误: 版本号格式不正确" " Error: Invalid version format"
45+ exit 1
46+ fi
47+ }
48+
49+ # 如果未通过参数指定版本号,则交互式输入 | Interactive input if version not specified
50+ if [ -z " $version " ]; then
51+ while true ; do
52+ recho " 请输入版本号 (格式: X.X.X): " " Please enter version number (format: X.X.X): "
53+ read -r version
54+ validate_version " $version " && break
55+ done
56+ else
57+ validate_version " $version "
58+ fi
59+
60+ # 切换到仓库目录 | Change to repository directory
61+ recho " 切换到仓库目录..." " Changing to repository directory..."
62+ cd " $REPO_DIR " || {
63+ recho " 错误: 无法切换到仓库目录" " Error: Failed to change to repository directory"
64+ exit 1
65+ }
66+
67+ # 创建并推送标签 | Create and push tag
68+ recho " 创建标签 v$version ..." " Creating tag v$version ..."
69+ git tag " v$version " || {
70+ recho " 错误: 创建标签失败" " Error: Failed to create tag"
71+ exit 1
72+ }
73+
74+ recho " 推送标签到远程仓库..." " Pushing tag to remote repository..."
75+ git push origin " v$version " || {
76+ recho " 错误: 推送标签失败" " Error: Failed to push tag"
77+ exit 1
78+ }
79+
80+ recho " 版本 $version 发布成功!" " Version $version released successfully!"
0 commit comments