mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-29 21:41:00 +08:00
2b0e6c9760
* 使用 POSIX shell 来保证脚本的可移植性 * 使用未转义的文件名(文件名中切不可有换行符) + 在无更改时返回错误退出 - 移除 news 文章分类
49 lines
1.4 KiB
Bash
49 lines
1.4 KiB
Bash
#!/bin/sh
|
|
# PR 文件变更分析
|
|
set -e
|
|
|
|
# 加载公用常量和函数
|
|
# shellcheck source=common.inc.sh
|
|
. "$(dirname "$0")/common.inc.sh"
|
|
|
|
################################################################################
|
|
# 读入:
|
|
# - /tmp/changes # 文件变更列表
|
|
# 写出:
|
|
# - /tmp/stats # 文件变更统计
|
|
################################################################################
|
|
|
|
# 执行分析并将统计输出到标准输出
|
|
do_analyze() {
|
|
cat /dev/null > /tmp/stats
|
|
OTHER_REGEX='^$'
|
|
for TYPE in 'SRC' 'TSL' 'PUB'; do
|
|
for STAT in 'A' 'M' 'D'; do
|
|
# 统计每个类别的每个操作
|
|
REGEX="$(get_operation_regex "$STAT" "$TYPE")"
|
|
OTHER_REGEX="${OTHER_REGEX}|${REGEX}"
|
|
CHANGES_FILE="/tmp/changes_${TYPE}_${STAT}"
|
|
eval "grep -E '$REGEX' /tmp/changes" \
|
|
| sed 's/^[^\/]*\///g' \
|
|
| sort > "$CHANGES_FILE" || true
|
|
sed 's/^.*\///g' "$CHANGES_FILE" > "${CHANGES_FILE}_basename"
|
|
eval "${TYPE}_${STAT}=$(wc -l < "$CHANGES_FILE")"
|
|
eval echo "${TYPE}_${STAT}=\$${TYPE}_${STAT}"
|
|
done
|
|
done
|
|
|
|
# 统计其他操作
|
|
OTHER="$(grep -Evc "$OTHER_REGEX" /tmp/changes)" || true
|
|
echo "OTHER=$OTHER"
|
|
|
|
# 统计变更总数
|
|
TOTAL="$(wc -l < /tmp/changes )"
|
|
echo "TOTAL=$TOTAL"
|
|
}
|
|
|
|
|
|
echo "[分析] 统计文件变更……"
|
|
do_analyze > /tmp/stats
|
|
echo "[分析] 已写入统计结果:"
|
|
cat /tmp/stats
|