name: Generate Rules for Clash
on:
  workflow_dispatch:
  push:
    branches: [ main ]
    paths:
      - '*.txt'
      - '.github/workflows/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master

      - name: Generate rules.txt file
        run: |
          # 设置环境变量
          echo "RELEASE_NAME=Released on $(date +%Y.%m.%d-%H:%M)" >> $GITHUB_ENV
          echo "TAG_NAME=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV
          # 下载*rules.txt文件
          mkdir publish
          for file in $(find $pwd -name "*rules.txt" | xargs ls -d); do 
            curl -sSL "https://raw.githubusercontent.com/$GITHUB_REPOSITORY/main/${file#*./}" > "./publish/${file#*./}"
          done

      - name: Release and upload assets
        uses: softprops/action-gh-release@v0.1.6
        with:
          name: ${{ env.RELEASE_NAME }}
          tag_name: ${{ env.TAG_NAME }}
          draft: false
          prerelease: false
          files: |
            ./publish/*
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Git push assets to "release" branch
        run: |
          cd publish || exit 1
          git init
          git config --local user.name "github-actions[bot]"
          git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git checkout -b release
          git add .
          git commit -m "${{ env.RELEASE_NAME }}"
          git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
          git push -f origin release

      - name: Purge jsdelivr CDN
        run: |
          cd publish || exit 1
          for file in $(ls); do
            curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@release/${file}"
          done
