name: Shared xterm dependency cache on: push: branches: [main] paths: - '.github/workflows/ci-xterm-cache.yml' - '.github/actions/prepare-xterm-dependencies/**' - 'config/patches/xterm-upstream.json' - 'config/scripts/regenerate-xterm-patches.mjs' - 'config/scripts/xterm-patch-text.mjs' - 'package.json' # Refresh after Node patch releases or cache eviction without rebuilding on hits. schedule: - cron: '17 5 * * *' workflow_dispatch: permissions: contents: read concurrency: group: xterm-cache-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: ORCA_BACKGROUND_LAUNCH: '1' jobs: seed: if: github.ref == 'refs/heads/main' runs-on: ubuntu-24.04-arm timeout-minutes: 10 steps: - uses: actions/checkout@v6 with: persist-credentials: false - uses: actions/setup-node@v6 with: node-version-file: package.json package-manager-cache: false - uses: ./.github/actions/prepare-xterm-dependencies id: cache - name: Verify and populate dependencies if: steps.cache.outputs.cache-hit != 'true' run: node config/scripts/regenerate-xterm-patches.mjs --check --work-dir="$RUNNER_TEMP/xterm-patch-build" - uses: actions/cache/save@v5 if: steps.cache.outputs.cache-hit != 'true' with: path: | ${{ runner.temp }}/xterm-patch-build/upstream/.git ${{ runner.temp }}/xterm-patch-build/upstream/node_modules key: ${{ steps.cache.outputs.cache-key }} - name: Preserve fallback downloads if: steps.cache.outputs.cache-hit != 'true' uses: actions/cache/save@v5 with: path: | ~/.npm ${{ runner.temp }}/xterm-patch-build/upstream/.git key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}