Skip to content

Create sync_readme.yml #1

Create sync_readme.yml

Create sync_readme.yml #1

Workflow file for this run

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

Check failure on line 40 in .github/workflows/sync_readme.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/sync_readme.yml

Invalid workflow file

You have an error in your yaml syntax on line 40
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