75 lines
No EOL
2.5 KiB
YAML
75 lines
No EOL
2.5 KiB
YAML
name: Sync Code of Conduct
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'CODE_OF_CONDUCT.md'
|
|
|
|
jobs:
|
|
sync-coc:
|
|
runs-on: debian-trixie
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Sync
|
|
env:
|
|
TOKEN: ${{ secrets.SPACEBOT_PAT }}
|
|
CURRENT_REPO: ${{ github.event.repository.name }}
|
|
SERVER_URL: ${{ github.server_url }}
|
|
TARGET_OWNER: "spacebar"
|
|
run: |
|
|
API_URL="${SERVER_URL}/api/v1/orgs/${TARGET_OWNER}/repos?limit=50"
|
|
REPOS=$(curl -s -o /tmp/repos.json -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL")
|
|
|
|
if [ "$REPOS" != "200" ]; then
|
|
API_URL="${SERVER_URL}/api/v1/users/${TARGET_OWNER}/repos?limit=50"
|
|
curl -s -H "Authorization: token $TOKEN" "$API_URL" > /tmp/repos.json
|
|
fi
|
|
|
|
REPO_LIST=$(jq -r '.[].name' /tmp/repos.json 2>/dev/null)
|
|
|
|
if [ -z "$REPO_LIST" ] || [ "$REPO_LIST" = "null" ]; then
|
|
echo "Error: No repositories found or failed to fetch for owner: $TARGET_OWNER"
|
|
exit 1
|
|
fi
|
|
|
|
B64_TOKEN=$(echo -n "spacebot:$TOKEN" | base64 | tr -d '\n')
|
|
|
|
for REPO in $REPO_LIST; do
|
|
if [ "$REPO" = "$CURRENT_REPO" ]; then
|
|
continue
|
|
fi
|
|
|
|
echo "Processing repository: $REPO"
|
|
|
|
if ! git -c "http.extraHeader=Authorization: Basic $B64_TOKEN" clone "${SERVER_URL}/${TARGET_OWNER}/${REPO}.git" temp_repo 2>/dev/null; then
|
|
echo "Skipping $REPO: Unable to clone or access denied."
|
|
continue
|
|
fi
|
|
|
|
cp CODE_OF_CONDUCT.md temp_repo/CODE_OF_CONDUCT.md
|
|
|
|
cd temp_repo
|
|
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
git config user.name "spacebot"
|
|
git config user.email "spacebot@noreply.spbr.net"
|
|
|
|
git add CODE_OF_CONDUCT.md
|
|
git commit -m "chore: update COC according to spacebar/Pqqaaaqqolicy changes"
|
|
|
|
if git -c "http.extraHeader=Authorization: Basic $B64_TOKEN" push origin main 2>/dev/null || git -c "http.extraHeader=Authorization: Basic $B64_TOKEN" push origin master 2>/dev/null; then
|
|
echo "successfully updated $REPO"
|
|
else
|
|
echo "skipping $REPO: Push failed (L bozo)"
|
|
fi
|
|
else
|
|
echo "no changes detected for $REPO"
|
|
fi
|
|
|
|
cd ..
|
|
rm -rf temp_repo
|
|
done |