Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
59 lines
1.3 KiB
Bash
Executable File
59 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Batch fetch PR details for changelog categorization
|
|
#
|
|
# Usage: ./fetch-pr-batch.sh <pr1> <pr2> ...
|
|
# or: echo "1234 5678" | ./fetch-pr-batch.sh
|
|
# Output: JSON array of PR details
|
|
|
|
set -e
|
|
|
|
# Collect PR numbers from arguments or stdin
|
|
prs=()
|
|
if [ $# -gt 0 ]; then
|
|
prs=("$@")
|
|
else
|
|
while read -r line; do
|
|
for pr in $line; do
|
|
prs+=("$pr")
|
|
done
|
|
done
|
|
fi
|
|
|
|
if [ ${#prs[@]} -eq 0 ]; then
|
|
echo "Usage: $0 <pr1> <pr2> ..." >&2
|
|
echo " or: echo '1234 5678' | $0" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Build GraphQL query for batch fetching
|
|
# This is much faster than individual gh pr view calls
|
|
query='query($owner: String!, $repo: String!) {'
|
|
for i in "${!prs[@]}"; do
|
|
pr="${prs[$i]}"
|
|
query+="
|
|
pr$i: repository(owner: \$owner, name: \$repo) {
|
|
pullRequest(number: $pr) {
|
|
number
|
|
title
|
|
author { login }
|
|
mergedAt
|
|
labels(first: 10) { nodes { name } }
|
|
body
|
|
}
|
|
}"
|
|
done
|
|
query+='}'
|
|
|
|
# Execute query
|
|
result=$(gh api graphql -f query="$query" -f owner="tldraw" -f repo="tldraw" 2>/dev/null)
|
|
|
|
# Transform into cleaner JSON array
|
|
echo "$result" | jq '[.data | to_entries[] | .value.pullRequest | select(. != null) | {
|
|
number: .number,
|
|
title: .title,
|
|
author: .author.login,
|
|
merged_at: .mergedAt,
|
|
labels: [.labels.nodes[].name],
|
|
body: .body
|
|
}] | sort_by(.number) | reverse'
|