Skip to content

chore: 迁移主分支到独立分支 #3

chore: 迁移主分支到独立分支

chore: 迁移主分支到独立分支 #3

Workflow file for this run

name: 更新代码统计
on:
push:
branches: [ main, rbac ]
schedule:
- cron: '0 0 * * *' # 每天凌晨运行一次
jobs:
update-stats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 安装 cloc
run: sudo apt-get install -y cloc
- name: 统计代码行数
id: cloc
run: |
# 生成统计数据,排除指定的文件和目录
STATS=$(cloc . --exclude-dir=vendor,node_modules,docs,tmp --exclude-ext=mod,sum,md --not-match-f="LICENSE|.gitignore|.dockerignore" --json)
# 提取各语言数据
GO_FILES=$(echo $STATS | jq -r '.Go.nFiles // 0')
GO_CODE=$(echo $STATS | jq -r '.Go.code // 0')
GO_COMMENT=$(echo $STATS | jq -r '.Go.comment // 0')
GO_BLANK=$(echo $STATS | jq -r '.Go.blank // 0')
DOCKER_FILES=$(echo $STATS | jq -r '.Dockerfile.nFiles // 0')
DOCKER_CODE=$(echo $STATS | jq -r '.Dockerfile.code // 0')
DOCKER_COMMENT=$(echo $STATS | jq -r '.Dockerfile.comment // 0')
DOCKER_BLANK=$(echo $STATS | jq -r '.Dockerfile.blank // 0')
YAML_FILES=$(echo $STATS | jq -r '.YAML.nFiles // 0')
YAML_CODE=$(echo $STATS | jq -r '.YAML.code // 0')
YAML_COMMENT=$(echo $STATS | jq -r '.YAML.comment // 0')
YAML_BLANK=$(echo $STATS | jq -r '.YAML.blank // 0')
# 计算其他语言
TOTAL_FILES=$(echo $STATS | jq -r '.SUM.nFiles // 0')
TOTAL_CODE=$(echo $STATS | jq -r '.SUM.code // 0')
TOTAL_COMMENT=$(echo $STATS | jq -r '.SUM.comment // 0')
TOTAL_BLANK=$(echo $STATS | jq -r '.SUM.blank // 0')
OTHER_FILES=$((TOTAL_FILES - GO_FILES - DOCKER_FILES - YAML_FILES))
OTHER_CODE=$((TOTAL_CODE - GO_CODE - DOCKER_CODE - YAML_CODE))
OTHER_COMMENT=$((TOTAL_COMMENT - GO_COMMENT - DOCKER_COMMENT - YAML_COMMENT))
OTHER_BLANK=$((TOTAL_BLANK - GO_BLANK - DOCKER_BLANK - YAML_BLANK))
# 计算百分比
GO_PERCENT=$(awk "BEGIN {printf \"%.1f%%\", ($GO_CODE / $TOTAL_CODE) * 100}")
DOCKER_PERCENT=$(awk "BEGIN {printf \"%.1f%%\", ($DOCKER_CODE / $TOTAL_CODE) * 100}")
YAML_PERCENT=$(awk "BEGIN {printf \"%.1f%%\", ($YAML_CODE / $TOTAL_CODE) * 100}")
OTHER_PERCENT=$(awk "BEGIN {printf \"%.1f%%\", ($OTHER_CODE / $TOTAL_CODE) * 100}")
# 更新中文 README
README_CONTENT=$(cat README.md)
NEW_TABLE="| 语言 | 文件数 | 代码行数 | 注释行数 | 空白行数 | 占比 |\n|:----:|:------:|:--------:|:--------:|:--------:|:----:|\n| Go | $GO_FILES | $GO_CODE | $GO_COMMENT | $GO_BLANK | $GO_PERCENT |\n| Docker | $DOCKER_FILES | $DOCKER_CODE | $DOCKER_COMMENT | $DOCKER_BLANK | $DOCKER_PERCENT |\n| YAML | $YAML_FILES | $YAML_CODE | $YAML_COMMENT | $YAML_BLANK | $YAML_PERCENT |\n| 其他 | $OTHER_FILES | $OTHER_CODE | $OTHER_COMMENT | $OTHER_BLANK | $OTHER_PERCENT |\n| **总计** | **$TOTAL_FILES** | **$TOTAL_CODE** | **$TOTAL_COMMENT** | **$TOTAL_BLANK** | **100%** |"
README_CONTENT=$(echo "$README_CONTENT" | sed -e "/| 语言 | 文件数 | 代码行数 | 注释行数 | 空白行数 | 占比 |/,/\*注:统计数据/c\\$NEW_TABLE\n\n*注:统计数据由 GitHub Actions 自动更新,最后更新于 $(date +"%Y-%m-%d")*\n*排除了 docs、tmp 目录和 go.mod、go.sum、LICENSE、.gitignore、.dockerignore、README.md、README_en.md 文件*")
echo "$README_CONTENT" > README.md
# 更新英文 README
README_EN_CONTENT=$(cat README_en.md)
NEW_TABLE_EN="| Language | Files | Code Lines | Comment Lines | Blank Lines | Percentage |\n|:--------:|:-----:|:----------:|:-------------:|:-----------:|:----------:|\n| Go | $GO_FILES | $GO_CODE | $GO_COMMENT | $GO_BLANK | $GO_PERCENT |\n| Docker | $DOCKER_FILES | $DOCKER_CODE | $DOCKER_COMMENT | $DOCKER_BLANK | $DOCKER_PERCENT |\n| YAML | $YAML_FILES | $YAML_CODE | $YAML_COMMENT | $YAML_BLANK | $YAML_PERCENT |\n| Others | $OTHER_FILES | $OTHER_CODE | $OTHER_COMMENT | $OTHER_BLANK | $OTHER_PERCENT |\n| **Total** | **$TOTAL_FILES** | **$TOTAL_CODE** | **$TOTAL_COMMENT** | **$TOTAL_BLANK** | **100%** |"
README_EN_CONTENT=$(echo "$README_EN_CONTENT" | sed -e "/| Language | Files | Code Lines | Comment Lines | Blank Lines | Percentage |/,/\*Note: Statistics/c\\$NEW_TABLE_EN\n\n*Note: Statistics are automatically updated by GitHub Actions, last updated on $(date +"%Y-%m-%d")*\n*Excluded docs, tmp directories and go.mod, go.sum, LICENSE, .gitignore, .dockerignore, README.md, README_en.md files*")
echo "$README_EN_CONTENT" > README_en.md
- name: 提交更改
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add README.md README_en.md
git commit -m "chore(docs): 更新代码统计报告 [skip ci]" || echo "没有变更需要提交"
git push