Skip to content

Commit

Permalink
Create sync_readme.yml
Browse files Browse the repository at this point in the history
Committing in the test-worthy GH action from Josh's use of Claude.
  • Loading branch information
ericearl authored Dec 12, 2024
1 parent 81d7dc7 commit 1b7c94f
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions .github/workflows/sync_readme.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Sync README across Repositories

on:
# Triggers the workflow on push to the main branch of the source repository
push:
branches: [ main ]
paths:
- 'README.md'

# Allow manual triggering of the workflow
workflow_dispatch:

jobs:
sync-readme:
runs-on: ubuntu-latest

steps:
# Checkout the repository
- uses: actions/checkout@v4

# Set up Python
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'

# Install dependencies
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install PyGithub
# Run the sync script
- name: Sync README
env:
# Use GitHub Actions secret for authentication
GITHUB_TOKEN: ${{ secrets.SYNC_README_TOKEN }}
run: |
python - << EOF
import os
from github import Github
from github.GithubException import UnknownObjectException

def sync_readme(org_name, repo_a_name, repo_b_name, target_subdir):
github_token = os.environ.get('GITHUB_TOKEN')
if not github_token:
raise ValueError("GitHub token must be set")

g = Github(github_token)

try:
org = g.get_organization(org_name)
repo_a = org.get_repo(repo_a_name)
repo_b = org.get_repo(repo_b_name)

try:
readme_a = repo_a.get_contents("README.md")
except UnknownObjectException:
print(f"No README.md found in {repo_a_name}")
return

target_path = f"{target_subdir}/README.md"

try:
existing_readme = repo_b.get_contents(target_path)
repo_b.update_file(
path=target_path,
message=f"Update README from {repo_a_name}",
content=readme_a.decoded_content,
sha=existing_readme.sha
)
print(f"Updated README in {repo_b_name}/{target_path}")
except UnknownObjectException:
repo_b.create_file(
path=target_path,
message=f"Add README from {repo_a_name}",
content=readme_a.decoded_content
)
print(f"Created README in {repo_b_name}/{target_path}")

except Exception as e:
print(f"An error occurred: {e}")

# Replace these with your specific repository details
sync_readme(
org_name="your-organization",
repo_a_name="source-repo",
repo_b_name="destination-repo",
target_subdir="docs"
)
EOF

0 comments on commit 1b7c94f

Please sign in to comment.