Skip to content

feat: update rules

feat: update rules #29

Workflow file for this run

name: check and fix
on:
push:
branches:
- "main"
pull_request:
types: [opened, synchronize, reopened]
paths:
- "**.json"
- "scripts/check.py"
- "scripts/fix_*.py"
- "scripts/create_rules_markdown.py"
- ".github/workflows/check-and-fix.yml"
defaults:
run:
shell: bash -e {0}
permissions:
contents: write
jobs:
check-forbid:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: astral-sh/setup-uv@v5
with:
version: "0.5.9"
enable-cache: true
- name: Check for forbidden file changes
run: |
forbidden_files=(
"rules.md"
"diff.md"
"bilibili-danmu-blocklist-output.json"
)
base_commit=${{ github.event.pull_request.base.sha }}
head_commit=${{ github.event.pull_request.head.sha }}
# 获取所有提交
all_commits=$(git log --pretty=format:"%H %an" $base_commit..$head_commit)
# 排除 github-actions[bot] 的提交
commits=$(echo "$all_commits" | grep -v "github-actions\[bot\]" | awk '{print $1}')
# 检查这些 commit 是否更改了指定的文件
for commit in $commits; do
changed_files=$(git diff-tree --no-commit-id --name-only -r $commit)
for file in "${forbidden_files[@]}"; do
if echo "$changed_files" | grep -q "$file"; then
echo "Error: Forbidden file $file was modified in commit $commit."
exit 1
fi
done
done
check-json:
needs: check-forbid
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: astral-sh/setup-uv@v5
with:
version: "0.5.9"
enable-cache: true
- name: Set up Python
run: uv python install 3.13
- name: Install the project
run: uv sync --all-extras --dev
- name: Check the json file
run: uv run scripts/check.py
fix:
needs: check-json
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: astral-sh/setup-uv@v5
with:
version: "0.5.9"
enable-cache: true
- name: Set up Python
run: uv python install 3.13
- name: Initialize the dev-environment
run: |
pip install ruff
uv sync --all-extras --dev
- name: Fix - Format the python files
run: ruff format
- name: Fix - Sort the json file
run: uv run scripts/fix_sort.py
- name: Fix - Add timestamp to the rules
run: uv run scripts/fix_id.py
- name: Create rules.md
run: uv run scripts/create_rules_markdown.py
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Check for changes
id: git_diff
run: |
git diff --exit-code || echo "has_changed=true" >> $GITHUB_OUTPUT
- name: Commit changes
if: ${{ steps.git_diff.outputs.has_changed == 'true' }}
run: |
git add .
git commit -m "fix: auto fix"
git pull --rebase origin ${{ github.head_ref }}
git push origin HEAD:${{ github.head_ref }}
- name: Push changes
if: ${{ steps.git_diff.outputs.has_changed == 'true' }}
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.head_ref }}