Skip to content

Commit c151fe0

Browse files
committed
Script: Modify deploy.sh and common.sh
1 parent 4c2901f commit c151fe0

3 files changed

Lines changed: 214 additions & 13 deletions

File tree

.github/workflows/build.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,25 @@ jobs:
178178
- name: Add change log file in Release.md file
179179
if: ${{ startsWith(github.ref, 'refs/tags/') }}
180180
run: |
181+
if [ -f ${{github.workspace}}/Script/common.sh ]; then
182+
source ${{github.workspace}}/Script/Common.sh
183+
184+
content=$(<${{github.workspace}}/ChangeLog.log)
185+
if [[ $content =~ ${{env.RabbitRemoteControl_VERSION}} ]]; then
186+
echo "## :us: Change log" >> ${{github.workspace}}/Release.md
187+
echo "" >> ${{github.workspace}}/Release.md
188+
get_section ${{github.workspace}}/ChangeLog.log >> ${{github.workspace}}/Release.md
189+
echo "" >> ${{github.workspace}}/Release.md
190+
fi
191+
192+
content=$(<${{github.workspace}}/ChangeLog_zh_CN.log)
193+
if [[ $content =~ ${{env.RabbitRemoteControl_VERSION}} ]]; then
194+
echo "## :cn: 修改日志" >> ${{github.workspace}}/Release.md
195+
echo "" >> ${{github.workspace}}/Release.md
196+
get_section ${{github.workspace}}/ChangeLog_zh_CN.log >> ${{github.workspace}}/Release.md
197+
echo "" >> ${{github.workspace}}/Release.md
198+
fi
199+
fi
181200
# 因为其它网站也可能需要,所以用完整的 URL
182201
echo "|:us: English|:cn: 中文|" >> ${{github.workspace}}/Release.md
183202
echo "| :- |:- |" >> ${{github.workspace}}/Release.md
@@ -194,6 +213,17 @@ jobs:
194213
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
195214
run: |
196215
echo "**This release is for development and testing purposes only!**" >> ${{github.workspace}}/Release.md
216+
if [ -f ${{github.workspace}}/Script/common.sh ]; then
217+
source ${{github.workspace}}/Script/Common.sh
218+
219+
content=$(<${{github.workspace}}/ChangeLog.log)
220+
if [[ $content =~ ${{env.RabbitRemoteControl_VERSION}} ]]; then
221+
echo "## :us: Change log" >> ${{github.workspace}}/Release.md
222+
echo "" >> ${{github.workspace}}/Release.md
223+
get_section ${{github.workspace}}/ChangeLog.log >> ${{github.workspace}}/Release.md
224+
echo "" >> ${{github.workspace}}/Release.md
225+
fi
226+
fi
197227
echo "" >> ${{github.workspace}}/Release.md
198228
echo "Commit: [${{github.sha}}](https://github.com/KangLin/RabbitRemoteControl/commit/${{github.sha}})" >> ${{github.workspace}}/Release.md
199229
echo "" >> ${{github.workspace}}/Release.md

Script/common.sh

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,103 @@
4545
# [>] - Progress / Next step
4646
# [*] - Generic bullet point
4747

48+
check_echo_color() {
49+
# 定义颜色常量
50+
# 8色(标准)
51+
BLACK='\033[0;30m'
52+
DARK_GRAY='\033[1;30m'
53+
RED='\033[0;31m'
54+
LIGHT_RED='\033[1;31m'
55+
GREEN='\033[0;32m'
56+
LIGHT_GREEN='\033[1;32m'
57+
BROWN='\033[0;33m'
58+
YELLOW='\033[1;33m'
59+
BLUE='\033[0;34m'
60+
LIGHT_BLUE='\033[1;34m'
61+
PURPLE='\033[0;35m'
62+
LIGHT_PURPLE='\033[1;35m'
63+
CYAN='\033[0;36m'
64+
LIGHT_CYAN='\033[1;36m'
65+
LIGHT_GRAY='\033[0;37m'
66+
WHITE='\033[1;37m'
67+
# 256色(需要终端支持)
68+
# 格式:\033[38;5;${color}m 前景色
69+
# 格式:\033[48;5;${color}m 背景色
70+
# 背景颜色(在颜色代码基础上加 10)
71+
BG_BLACK='\033[40m'
72+
BG_RED='\033[41m'
73+
BG_GREEN='\033[42m'
74+
BG_YELLOW='\033[43m'
75+
BG_BLUE='\033[44m'
76+
BG_PURPLE='\033[45m'
77+
BG_CYAN='\033[46m'
78+
BG_WHITE='\033[47m'
79+
# 样式
80+
BOLD='\033[1m'
81+
UNDERLINE='\033[4m'
82+
BLINK='\033[5m' # 闪烁(部分终端不支持)
83+
REVERSE='\033[7m' # 反显
84+
# 重置
85+
NC='\033[0m' # No Color
86+
87+
# 检查是否支持颜色
88+
if [ -t 1 ] && [ "$TERM" != "dumb" ]; then
89+
# 支持颜色
90+
RED='\033[0;31m'
91+
GREEN='\033[0;32m'
92+
NC='\033[0m'
93+
else
94+
# 不支持颜色
95+
RED=''
96+
GREEN=''
97+
NC=''
98+
fi
99+
100+
echo -e "${GREEN}带颜色的输出${NC}"
101+
}
102+
103+
check_echo_color_with_tput() {
104+
# 使用 tput(更兼容)
105+
if command -v tput >/dev/null 2>&1 && [ -t 1 ]; then
106+
BOLD=$(tput bold)
107+
RED=$(tput setaf 1)
108+
GREEN=$(tput setaf 2)
109+
YELLOW=$(tput setaf 3)
110+
BLUE=$(tput setaf 4)
111+
MAGENTA=$(tput setaf 5)
112+
CYAN=$(tput setaf 6)
113+
NC=$(tput sgr0)
114+
else
115+
BOLD=""; RED=""; GREEN=""; YELLOW=""; BLUE=""; MAGENTA=""; CYAN=""; NC=""
116+
fi
117+
}
118+
#check_echo_color
119+
#check_echo_color_with_tput
120+
log_info() {
121+
echo -e "${GREEN}[i]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
122+
}
123+
log_warn() {
124+
echo -e "${YELLOW}[!]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
125+
}
126+
log_error() {
127+
echo -e "${RED}[X]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" >&2
128+
}
129+
log_success() {
130+
echo -e "${GREEN}[✓]${NC} $1"
131+
}
132+
log_fail() {
133+
echo -e "${RED}[X]${NC} $1" >&2
134+
}
135+
echo_success() {
136+
echo -e "${GREEN} $1 ${NC}"
137+
}
138+
echo_warn() {
139+
echo -e "${YELLOW} $1 ${NC}"
140+
}
141+
echo_error() {
142+
echo -e "${RED} $1 ${NC}" >&2
143+
}
144+
48145
# Validate directory path
49146
validate_directory() {
50147
local dir="$1"
@@ -760,3 +857,59 @@ test_version() {
760857
echo "compare_versions \"v2.0.0+dev\" \"v2.0.0+dev.1\": `compare_versions "v2.0.0+dev" "v2.0.0+dev.1"; echo $?`"
761858
echo "compare_versions \"v2.0.0-alpha+dev\" \"v2.0.0-alpha+dev.1\": `compare_versions "v2.0.0-alpha+dev" "v2.0.0-alpha+dev.1"; echo $?`"
762859
}
860+
861+
862+
# 获取第一个 ### 到第二个 ### 之间的内容(包括标记行)
863+
# sed -n '/###/,/###/p' 文件
864+
# 获取第一个 ### 到第二个 ### 之间的内容(不包括标记行)
865+
# sed -n '/###/,/###/{//!p}' 文件
866+
# 获取特定范围的 ### 之间的内容(例如第1对和第2对)
867+
# sed -n '/###/,/###/p' 文件 | head -n -1 # 不包括结束标记
868+
# 获取从第一个 ### 到最后一个 ### 之间的所有内容
869+
# sed -n '/###/,/###/p' 文件
870+
871+
# 获取两个 ### 之间的内容(包括标记)
872+
#awk '/###/,/###/' 文件
873+
# 获取两个 ### 之间的内容(不包括标记)
874+
#awk '/###/{flag=!flag; next} flag' 文件
875+
# 获取第一个 ### 到第二个 ### 之间的内容(不包括标记)
876+
# awk '/###/{count++; if(count==1){flag=1; next} if(count==2){flag=0; exit}} flag' 文件
877+
878+
#关键说明
879+
#sed -n '/start/,/end/p':打印从 start 到 end 的所有行
880+
#awk '/start/,/end/':打印从 start 到 end 的所有行
881+
#{//!p}:sed 中的排除模式行,不打印匹配的行
882+
#flag=!flag:awk 中的切换标志技巧
883+
#next:跳过当前行,不打印
884+
#选择哪种方法取决于:
885+
#是否需要排除标记行
886+
#是否需要处理多个区块
887+
#文件大小(大文件建议用 awk)
888+
#是否包含特殊字符
889+
890+
# 函数:获取两个标记之间的内容
891+
# 参数1: 文件名
892+
# 参数2: 标记(默认 ###)
893+
# 参数3: 区块索引(默认 1,获取第几个区块)
894+
get_section() {
895+
local file="$1"
896+
local marker="${2:-###}"
897+
local index="${3:-1}"
898+
899+
awk -v marker="$marker" -v idx="$index" '
900+
$0 ~ marker {
901+
count++
902+
if (count == idx * 2 - 1) {
903+
in_section = 1
904+
next
905+
}
906+
if (count == idx * 2) {
907+
in_section = 0
908+
exit
909+
}
910+
}
911+
in_section {
912+
print
913+
}
914+
' "$file"
915+
}

deploy.sh

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ init_value() {
128128
SOURCE_DIR=$(dirname $(safe_readlink $0))
129129
if [ -f ${SOURCE_DIR}/Script/common.sh ]; then
130130
source ${SOURCE_DIR}/Script/common.sh
131+
check_echo_color_with_tput
131132
check_git
132133
fi
133134

@@ -319,9 +320,9 @@ parse_with_getopts() {
319320
# 参数验证
320321
if [ -n "$VERSION" ]; then
321322
if [[ ! "$VERSION" =~ ^${VERSION_PATTERN}$ ]]; then
322-
echo "X Invalid SemVer format: $VERSION" >&2
323-
echo " Expected format: [v]X.Y.Z[-prerelease][+build]" >&2
324-
echo " See: https://semver.org/" >&2
323+
echo_error "X Invalid SemVer format: $VERSION" >&2
324+
echo_error " Expected format: [v]X.Y.Z[-prerelease][+build]" >&2
325+
echo_error " See: https://semver.org/" >&2
325326
exit 1
326327
fi
327328
fi
@@ -343,6 +344,22 @@ parse_with_getopts() {
343344
DATE_TIME_UTC=$(date -u +"%Y-%m-%d %H:%M:%S (UTC)")
344345
}
345346

347+
check_chang_log() {
348+
echo " ? Modified change log?"
349+
local content=$(<${SOURCE_DIR}/Changelog.md)
350+
if [[ $content =~ $VERSION ]]; then
351+
echo_success " √ Modified in \"Changelog.md\""
352+
else
353+
echo_warn " ! Warning: Don't include \"$VERSION\" in the file \"Changelog.md\""
354+
fi
355+
content=$(<${SOURCE_DIR}/Changelog_zh_CN.md)
356+
if [[ $content =~ $VERSION ]]; then
357+
echo_success " √ Modified change log in \"Changelog_zh_CN.md\""
358+
else
359+
echo_warn " ! Warning: Don't include \"$VERSION\" in the file \"Changelog_zh_CN.md\""
360+
fi
361+
}
362+
346363
create_tag() {
347364
if [ "$DEPLOY" = "ON" ]; then
348365
#PRE_TAG=`git tag --sort=-taggerdate | head -n 1`
@@ -352,13 +369,14 @@ create_tag() {
352369
echo " Message: $MESSAGE"
353370
echo ""
354371
echo "Please verify:"
355-
echo " √ Modify change log?"
356-
echo " √ Translations updated?"
372+
echo " ? Modify change log?"
373+
check_chang_log
374+
echo " ? Translations updated?"
357375
echo ""
358376

359-
read -t 30 -p "? Deploy? (y/N): " INPUT
377+
read -t 60 -p "? Deploy? (y/N): " INPUT
360378
if [ "${INPUT:-N}" != "Y" ] && [ "${INPUT:-N}" != "y" ]; then
361-
echo "X Deployment cancelled"
379+
echo_error "X Deployment cancelled"
362380
exit 0
363381
fi
364382

@@ -368,14 +386,14 @@ create_tag() {
368386
if git rev-parse "$VERSION" >/dev/null 2>&1; then
369387
echo "= Tag $VERSION already exists, deleting ......"
370388
git tag -d "$VERSION"
371-
echo "√ Successfully delete tag $VERSION"
389+
echo_success "√ Successfully delete tag $VERSION"
372390
echo ""
373391
fi
374392

375393
# Create new tag
376394
echo "= Creating tag: $VERSION ......"
377395
git tag -a "$VERSION" -m "${MESSAGE}"
378-
echo "√ Tag created: $VERSION"
396+
echo_success "√ Tag created: $VERSION"
379397
echo ""
380398
fi
381399
}
@@ -387,9 +405,9 @@ commit_code() {
387405
# Commit if there are changes
388406
if ! git diff --cached --quiet; then
389407
git commit -m "$MESSAGE"
390-
echo "√ Changes committed"
408+
echo_success "√ Changes committed"
391409
else
392-
echo "X No changes to commit"
410+
echo_error "X No changes to commit"
393411
exit 1
394412
fi
395413
}
@@ -408,7 +426,7 @@ push_remote_repository() {
408426
git push origin HEAD
409427
git push origin "$VERSION"
410428

411-
echo "√ Push to remote repository successfully!"
429+
echo_success "√ Push to remote repository successfully!"
412430
fi
413431
}
414432

@@ -426,7 +444,7 @@ echo "= Update version to $VERSION ......"
426444

427445
update_verion
428446

429-
echo "√ Version updated to $VERSION successfully!"
447+
echo_success "√ Version updated to $VERSION successfully!"
430448
#echo " Time: $DATE_TIME_UTC"
431449
echo ""
432450

0 commit comments

Comments
 (0)