# Generated by KCL v1.34.3 - DO NOT EDIT # Source: .forgejo/kcl-ci/main.k # kcl-ci local: ~/stuff/gitrepos/wxs/actions/kcl-ci # kcl-ci remote: https://git.wxs.ro/actions/kcl-ci name: Upstream Sync Check 'on': schedule: - cron: '0 8 * * 1' workflow_dispatch: {} jobs: check-upstream: name: Check for upstream updates runs-on: grunt steps: - name: Checkout uses: https://${{ secrets.READ_REPO_TOKEN }}@git.wxs.ro/xternal/checkout@v6.0.2 with: fetch-depth: '0' - name: Configure upstream remote run: |- if ! git remote get-url upstream &> /dev/null; then git remote add upstream https://github.com/anthropics/claude-code-action.git fi - name: Fetch upstream run: git fetch upstream main --quiet - name: Compare with upstream id: compare run: |- BEHIND_COUNT=$(git rev-list main..upstream/main --count) AHEAD_COUNT=$(git rev-list upstream/main..main --count) echo "behind=$BEHIND_COUNT" >> "$GITHUB_OUTPUT" echo "ahead=$AHEAD_COUNT" >> "$GITHUB_OUTPUT" echo "Our main is $BEHIND_COUNT commits behind and $AHEAD_COUNT commits ahead of upstream" if [ "$BEHIND_COUNT" -gt 0 ]; then echo "needs_sync=true" >> "$GITHUB_OUTPUT" echo "--- New upstream commits ---" git log main..upstream/main --oneline | head -30 echo "" echo "--- Files changed ---" DIFF_STAT=$(git diff --stat main...upstream/main) echo "$DIFF_STAT" { echo "diff_stat<> "$GITHUB_OUTPUT" { echo "commit_log<> "$GITHUB_OUTPUT" else echo "needs_sync=false" >> "$GITHUB_OUTPUT" echo "Already up to date with upstream" fi - name: Check for existing sync issue if: steps.compare.outputs.needs_sync == 'true' id: existing run: |- RESPONSE=$(curl -s \ -H "Authorization: token ${{ github.token }}" \ -H "Content-Type: application/json" \ "${{ env.GITHUB_API_URL }}/repos/${{ github.repository }}/issues?state=open&labels=upstream-sync&limit=1") ISSUE_COUNT=$(echo "$RESPONSE" | jq 'length') if [ "$ISSUE_COUNT" -gt 0 ]; then ISSUE_NUMBER=$(echo "$RESPONSE" | jq '.[0].number') echo "issue_exists=true" >> "$GITHUB_OUTPUT" echo "issue_number=$ISSUE_NUMBER" >> "$GITHUB_OUTPUT" echo "Found existing sync issue #$ISSUE_NUMBER" else echo "issue_exists=false" >> "$GITHUB_OUTPUT" echo "No existing sync issue found" fi - name: Create upstream-sync label if: steps.compare.outputs.needs_sync == 'true' run: |- curl -s -o /dev/null -w "%{http_code}" \ -X POST \ -H "Authorization: token ${{ github.token }}" \ -H "Content-Type: application/json" \ -d '{"name":"upstream-sync","color":"#0075ca","description":"Upstream sync tracking"}' \ "${{ env.GITHUB_API_URL }}/repos/${{ github.repository }}/labels" || true - name: Create or update sync issue if: steps.compare.outputs.needs_sync == 'true' run: |- BEHIND="${{ steps.compare.outputs.behind }}" AHEAD="${{ steps.compare.outputs.ahead }}" COMMIT_LOG=$(cat <<'LOG_EOF' ${{ steps.compare.outputs.commit_log }} LOG_EOF ) DIFF_STAT=$(cat <<'DIFF_EOF' ${{ steps.compare.outputs.diff_stat }} DIFF_EOF ) BODY=$(cat <