godot-xterm/.github/actions/cache-submodules/action.yaml
Leroy Hopson 1110219cf7
Only restore submodules on exact match
Only restore git submodules if we have an exact match, otherwise we will
restore outdated submodules over newer ones, then save the outdated
version with the exact match after.
2022-08-22 22:56:02 +12:00

32 lines
1.1 KiB
YAML

name: Cache dependencies
inputs:
platform:
required: true
target:
required: true
bits:
required: true
outputs:
cache-hit:
value: ${{ steps.cache.outputs.cache-hit }}
runs:
using: "composite"
steps:
- name: Hash submodule revisions
id: hash
working-directory: addons/godot_xterm/native/thirdparty
shell: bash
run: |
cache_version=1 # Increment this number to invalidate the cache.
godot_cpp_rev=$(git ls-tree HEAD godot-cpp --object-only)
libuv_rev=$(git ls-tree HEAD libuv --object-only)
libtsm_rev=$(git ls-tree HEAD libtsm --object-only)
hash_cmd=$([[ $RUNNER_OS == 'Windows' ]] && echo 'sha1sum' || echo 'shasum')
hash_of_hashes=$(echo -n "$godot_cpp_rev$libuv_rev$libtsm_rev$cache_version" | $hash_cmd | head -c 40)
echo "::set-output name=hash::$hash_of_hashes"
- name: Cache submodules
uses: actions/cache@v3
id: cache
with:
path: addons/godot_xterm/native/thirdparty
key: thirdparty-${{ inputs.platform }}-${{ inputs.bits }}-${{ inputs.target }}-${{ steps.hash.outputs.hash }}