mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
61 lines
2.5 KiB
YAML
61 lines
2.5 KiB
YAML
name: Area labels
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '30 * * * *'
|
|
workflow_dispatch:
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
label:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
steps:
|
|
- uses: actions/cache/restore@v6
|
|
with:
|
|
path: ${{ runner.temp }}/area-state.json
|
|
key: area-labels-${{ github.run_id }}
|
|
restore-keys: area-labels-
|
|
- id: prs
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
state=$RUNNER_TEMP/area-state.json
|
|
[ -s "$state" ] || echo '{}' > "$state"
|
|
config=$(gh api "repos/$GITHUB_REPOSITORY/contents/.github/labeler.yml" --jq .sha)
|
|
gh api graphql --paginate --slurp \
|
|
-f owner="${GITHUB_REPOSITORY%/*}" -f name="${GITHUB_REPOSITORY#*/}" \
|
|
-f base="${{ github.event.repository.default_branch }}" -f query='
|
|
query($owner: String!, $name: String!, $base: String!, $endCursor: String) {
|
|
repository(owner: $owner, name: $name) {
|
|
pullRequests(states: OPEN, baseRefName: $base, first: 100, after: $endCursor,
|
|
orderBy: {field: CREATED_AT, direction: DESC}) {
|
|
pageInfo { hasNextPage endCursor }
|
|
nodes { number headRefOid }
|
|
}
|
|
}
|
|
}' | jq -c --arg config "$config" \
|
|
'[.[].data.repository.pullRequests.nodes[]
|
|
| {key: (.number | tostring), value: (.headRefOid + "-" + $config)}] | from_entries' \
|
|
> "$RUNNER_TEMP/area-open.json"
|
|
jq -r --slurpfile old "$state" 'to_entries[] | select($old[0][.key] != .value) | .key' "$RUNNER_TEMP/area-open.json" | head -n 40 > "$RUNNER_TEMP/area-todo"
|
|
jq -c --slurpfile open "$RUNNER_TEMP/area-open.json" --rawfile todo "$RUNNER_TEMP/area-todo" \
|
|
'with_entries(select(.key | in($open[0]))) + ($open[0] | with_entries(select(.key | IN($todo | split("\n")[]))))' "$state" > "$RUNNER_TEMP/area-next.json"
|
|
{
|
|
echo 'numbers<<EOF'
|
|
cat "$RUNNER_TEMP/area-todo"
|
|
echo EOF
|
|
} >> "$GITHUB_OUTPUT"
|
|
- if: steps.prs.outputs.numbers != ''
|
|
uses: actions/labeler@v7
|
|
with:
|
|
pr-number: ${{ steps.prs.outputs.numbers }}
|
|
- run: mv "$RUNNER_TEMP/area-next.json" "$RUNNER_TEMP/area-state.json"
|
|
- uses: actions/cache/save@v6
|
|
with:
|
|
path: ${{ runner.temp }}/area-state.json
|
|
key: area-labels-${{ github.run_id }}
|