forked from cartridge-gg/controller
-
Notifications
You must be signed in to change notification settings - Fork 0
190 lines (161 loc) · 7.89 KB
/
docs-sync.yml
File metadata and controls
190 lines (161 loc) · 7.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
name: doc-sync
on:
pull_request:
types: [closed]
branches: [main]
workflow_dispatch:
inputs:
commit_sha:
description: "Commit SHA to analyze for documentation updates"
required: true
type: string
jobs:
docs-sync:
if:
github.event.pull_request.merged == true || github.event_name ==
'workflow_dispatch'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
id-token: write
steps:
- name: Checkout controller repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
run: |
set -e
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
# Get changed files for the specified commit
git fetch origin
CHANGED_FILES=$(git diff --name-only ${{ github.event.inputs.commit_sha }}~1 ${{ github.event.inputs.commit_sha }})
else
# Get list of changed files in the merged PR
git fetch origin main
CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.merge_commit_sha }})
fi
echo "changed_files<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGED_FILES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Check if docs update needed
id: check-docs
run: |
# Check if changes require documentation updates
NEEDS_DOCS_UPDATE=false
# Define patterns that typically require docs updates
DOCS_PATTERNS=(
"^src/.*\.ts$"
"^src/.*\.tsx$"
"^packages/.*/src/.*\.ts$"
"^packages/.*/src/.*\.tsx$"
"^README\.md$"
"^CHANGELOG\.md$"
"^docs/"
"package\.json$"
"^api/"
"^schema/"
)
while IFS= read -r file; do
for pattern in "${DOCS_PATTERNS[@]}"; do
if [[ $file =~ $pattern ]]; then
NEEDS_DOCS_UPDATE=true
break 2
fi
done
done <<< "${{ steps.changed-files.outputs.changed_files }}"
echo "needs_update=$NEEDS_DOCS_UPDATE" >> $GITHUB_OUTPUT
echo "Files that may need docs updates: $(echo '${{ steps.changed-files.outputs.changed_files }}' | tr '\n' ' ')"
- name: Checkout docs repository
if: steps.check-docs.outputs.needs_update == 'true'
uses: actions/checkout@v4
with:
repository: cartridge-gg/docs
token: ${{ secrets.CREATE_PR_TOKEN }}
path: docs-repo
- name: Analyze changes and update docs
if: steps.check-docs.outputs.needs_update == 'true'
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
direct_prompt: |
I need you to analyze the changes in this controller repository PR and update the documentation in the cartridge-gg/docs repository accordingly.
**Change Information:**
- Title: ${{ github.event.pull_request.title || format('Manual trigger for commit {0}', github.event.inputs.commit_sha) }}
- Description: ${{ github.event.pull_request.body || 'Manually triggered documentation sync' }}
- Files changed: ${{ steps.changed-files.outputs.changed_files }}
- Commit SHA: ${{ github.event.pull_request.merge_commit_sha || github.event.inputs.commit_sha }}
**Your tasks:**
1. Review the changed files and PR description to understand what functionality was added, modified, or removed
2. Check the docs-repo directory to see what documentation currently exists
3. Determine if any existing documentation needs updates or if new documentation should be created
4. If updates are needed:
- Create or update the appropriate documentation files in the docs-repo directory
- Ensure the documentation accurately reflects the current state of the controller
- Follow the existing documentation style and structure
- Focus on user-facing changes, API changes, new features, or breaking changes
**Important guidelines:**
- Only create documentation updates if they are actually needed
- Don't document internal implementation details unless they affect usage
- If no documentation updates are needed, simply state that and exit
- DO NOT create git branches, commits, or PRs - just update the files
The docs repository is checked out in the `docs-repo` directory. Please analyze the controller changes and update the documentation files accordingly.
allowed_tools: "Read,Write,Edit,MultiEdit,Glob,Grep"
- name: Create branch and commit changes
if: steps.check-docs.outputs.needs_update == 'true'
working-directory: docs-repo
run: |
# Configure git
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Check if there are any changes
if [ -n "$(git status --porcelain)" ]; then
# Create new branch
BRANCH_NAME="docs-update-$(date +%s)"
git checkout -b "$BRANCH_NAME"
# Add and commit changes
git add .
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
git commit -m "docs: Update documentation for controller commit ${{ github.event.inputs.commit_sha }}
Updates documentation to reflect changes made in commit:
${{ github.event.inputs.commit_sha }}
Manually triggered documentation sync"
else
git commit -m "docs: Update documentation for controller PR #${{ github.event.pull_request.number }}
Updates documentation to reflect changes made in:
${{ github.event.pull_request.title }}
Related controller PR: cartridge-gg/controller#${{ github.event.pull_request.number }}"
fi
# Push branch
git push origin "$BRANCH_NAME"
# Create PR
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
gh pr create \
--title "docs: Update documentation for controller commit ${{ github.event.inputs.commit_sha }}" \
--body "This PR updates the documentation to reflect changes made in cartridge-gg/controller commit ${{ github.event.inputs.commit_sha }}
**Commit Details:**
- Commit SHA: ${{ github.event.inputs.commit_sha }}
- Files changed: ${{ steps.changed-files.outputs.changed_files }}
- Trigger: Manual documentation sync
Please review the documentation changes to ensure they accurately reflect the controller updates."
else
gh pr create \
--title "docs: Update documentation for controller PR #${{ github.event.pull_request.number }}" \
--body "This PR updates the documentation to reflect changes made in cartridge-gg/controller#${{ github.event.pull_request.number }}
**Original PR Details:**
- Title: ${{ github.event.pull_request.title }}
- Files changed: ${{ steps.changed-files.outputs.changed_files }}
Please review the documentation changes to ensure they accurately reflect the controller updates."
fi
else
echo "No documentation changes were made by Claude"
fi
env:
GITHUB_TOKEN: ${{ secrets.CREATE_PR_TOKEN }}
- name: Cleanup
if: always()
run: |
# Clean up any temporary files or directories
rm -rf docs-repo || true