| name: 'Cache for all OSes' | |
| description: 'Needs to be called before any call to ext/.cmd|sh or cmake' | |
| inputs: | |
| use-rust: | |
| description: 'Whether rust is used' | |
| default: false | |
| extra-key: | |
| description: 'Extra cache key to use in the cache name. Useful when several caches are used in one workflow.' | |
| default: '' | |
| outputs: | |
| ext-cache-hit: | |
| value: ${{ steps.cache-ext.outputs.cache-hit }} | |
| runs: | |
| using: "composite" | |
| steps: | |
| - name: Find workflow path | |
| env: | |
| WORKFLOW_REF: ${{ github.workflow_ref }} | |
| id: workflow-info | |
| run: | | |
| # Remove repository path. | |
| END=(${WORKFLOW_REF/*.github/.github}) | |
| # Remove branch reference starting with @. | |
| MIDDLE=(${END/%@*/}) | |
| echo "Current workflow path is: ${MIDDLE}" | |
| echo "path=${MIDDLE}" >> "$GITHUB_OUTPUT" | |
| shell: bash | |
| - name: Generate cargo cache key | |
| if: ${{ inputs.use-rust == 'true' }} | |
| id: cargo-key | |
| run: | | |
| echo "key=cargo-registry-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }}-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'CMakeLists.txt', 'cmake/Modules/Findrav1e.cmake', 'cmake/Modules/LocalRav1e.cmake', 'ext/rav1e.cmd') }}" >> "$GITHUB_OUTPUT" | |
| shell: bash | |
| - name: Cache all of cargo | |
| if: ${{ inputs.use-rust == 'true' }} | |
| uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
| continue-on-error: true | |
| with: | |
| path: ~/.cargo | |
| key: ${{ steps.cargo-key.outputs.key }}-${{ github.run_id }} | |
| restore-keys: ${{ steps.cargo-key.outputs.key }} | |
| - name: Cache external dependencies in ext | |
| id: cache-ext | |
| uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
| with: | |
| path: ext | |
| key: ext-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }}-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'ext/*.cmd', 'ext/*.sh') }} | |
| - name: Cache external dependencies in build/_deps | |
| uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
| with: | |
| path: build/_deps | |
| key: deps-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }}-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'CMakeLists.txt', 'cmake/Modules/*') }} |