name: ccache
inputs:
  name:
    required: true
  php_directory:
    required: false
    default: '.'
  cc:
    required: false
    default: 'gcc'
  cxx:
    required: false
    default: 'g++'
runs:
  using: composite
  steps:
    - name: Get cache key
      shell: bash
      id: cache_key
      run: |
        major=$(cat ${{ inputs.php_directory }}/main/php_version.h | sed -En 's/^#define PHP_MAJOR_VERSION ([0-9]+)/\1/p')
        minor=$(cat ${{ inputs.php_directory }}/main/php_version.h | sed -En 's/^#define PHP_MINOR_VERSION ([0-9]+)/\1/p')
        release=$(cat ${{ inputs.php_directory }}/main/php_version.h | sed -En 's/^#define PHP_RELEASE_VERSION ([0-9]+)/\1/p')
        week=$(date +"%Y-%W")
        prefix="${{ inputs.name }}-$major.$minor.$release"
        echo "key=$prefix-$week" >> $GITHUB_OUTPUT
        echo "prefix=$prefix-" >> $GITHUB_OUTPUT
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: "${{ steps.cache_key.outputs.key }}"
        append-timestamp: false
        restore-keys: "${{ steps.cache_key.outputs.prefix }}"
        save: ${{ github.event_name != 'pull_request' }}
    - name: Export CC/CXX
      shell: bash
      run: |
        echo "CC=ccache ${{ inputs.cc }}" >> $GITHUB_ENV
        echo "CXX=ccache ${{ inputs.cxx }}" >> $GITHUB_ENV
