name: Full Repo Management Daily on: workflow_dispatch: schedule: - cron: "5 2 * * *" permissions: contents: write concurrency: group: full-repo-management cancel-in-progress: false jobs: manage: runs-on: ubuntu-latest steps: - name: Checkout builder repo uses: actions/checkout@v4 with: fetch-depth: 0 github-server-url: https://git.halonice.com - name: Check Python runtime shell: bash run: | set -euo pipefail python3 --version - name: Prepare config shell: bash run: | if [ -f configs/config.toml ]; then echo "Use existing configs/config.toml" elif [ -f configs/config.json ]; then echo "Use existing configs/config.json" elif [ -f configs/examples/config.example.toml ]; then cp configs/examples/config.example.toml configs/config.toml echo "Generated configs/config.toml from example" else echo "No config file found" >&2 exit 1 fi - name: Sync upstream and generate rules shell: bash env: UPSTREAM_REF: ${{ vars.UPSTREAM_REF }} run: | set -euo pipefail UPSTREAM_REF="${UPSTREAM_REF:-master}" bash tools/sync_surge_full.sh if [ -f configs/config.toml ]; then python3 src/rulegen.py --config configs/config.toml else python3 src/rulegen.py --config configs/config.json fi - name: Commit and push builder updates shell: bash run: | set -euo pipefail branch="${GITHUB_REF_NAME:-}" if [ -z "${branch}" ]; then branch="$(git rev-parse --abbrev-ref HEAD || true)" fi if [ -z "${branch}" ] || [ "${branch}" = "HEAD" ]; then branch="main" fi git config user.name "gitea-actions[bot]" git config user.email "gitea-actions@localhost" git add -A if git diff --cached --quiet; then echo "No builder changes" echo "builder_changed=false" >> "$GITHUB_ENV" else git commit -m "chore: daily sync and generate rules" git push origin "HEAD:${branch}" echo "builder_changed=true" fi