name: Check vendor on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ 'vendor/**', 'scripts/sync_vendor.py' ] pull_request: types: [opened, synchronize, reopened] paths: [ 'vendor/**', 'scripts/sync_vendor.py' ] jobs: check-vendor: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Run vendor sync run: | set -euo pipefail python3 scripts/sync_vendor.py - name: Check for changes run: | set -euo pipefail # detect modified or untracked files changed=$(git status --porcelain --untracked-files=all || true) if [ -n "$changed" ]; then echo "Vendor sync modified files:" echo "$changed" | awk '{ print $2 }' | sed '/^$/d' echo "Failing because vendor files mismatch. Please update scripts/sync_vendor.py" exit 1 else echo "Vendor files are up-to-date." fi