# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Setup ccache
description: Install, configure and cache ccache for CI builds

inputs:
  cache-key-prefix:
    description: Prefix for the cache key (e.g., ccache-gcc-test)
    required: true

runs:
  using: composite
  steps:
    - name: Install ccache
      shell: bash
      run: sudo apt-get update && sudo apt-get install -y ccache

    - name: Restore ccache
      uses: actions/cache@v4
      with:
        path: ~/.ccache
        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ github.ref_name }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cmake') }}
        restore-keys: |
          ${{ inputs.cache-key-prefix }}-${{ runner.os }}-${{ github.ref_name }}-
          ${{ inputs.cache-key-prefix }}-${{ runner.os }}-

    - name: Configure ccache
      shell: bash
      run: ci/scripts/setup_ccache.sh
