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 "name=hash::$hash_of_hashes" >> $GITHUB_OUTPUT
    - 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 }}