name: Prepare runner
description: Install packages, set environment variables, create directories

inputs:
  disable_ccache:
    description: Whether ccache should be disabled
    required: true

runs:
  using: composite
  steps:
    - name: Install packages on mac
      if: ${{ runner.os == 'macOS' }}
      shell: bash
      run: |
        brew install \
          bison \
          ca-certificates \
          ccache \
          clang-build-analyzer \
          conan \
          gh \
          jq \
          llvm@14 \
          ninja \
          pkg-config
        echo "/opt/homebrew/opt/conan@2/bin" >> $GITHUB_PATH

    - name: Install CMake 3.31.6 on mac
      if: ${{ runner.os == 'macOS' }}
      shell: bash
      run: |
        # Uninstall any existing cmake
        brew uninstall cmake --ignore-dependencies || true

        # Download specific cmake formula
        FORMULA_URL="https://raw.githubusercontent.com/Homebrew/homebrew-core/b4e46db74e74a8c1650b38b1da222284ce1ec5ce/Formula/c/cmake.rb"
        FORMULA_EXPECTED_SHA256="c7ec95d86f0657638835441871e77541165e0a2581b53b3dd657cf13ad4228d4"

        mkdir -p /tmp/homebrew-formula
        curl -s -L "$FORMULA_URL" -o /tmp/homebrew-formula/cmake.rb

        echo "$FORMULA_EXPECTED_SHA256  /tmp/homebrew-formula/cmake.rb" | shasum -a 256 -c

        # Install cmake from the specific formula with force flag
        brew install --formula --force /tmp/homebrew-formula/cmake.rb

    - name: Fix git permissions on Linux
      if: ${{ runner.os == 'Linux' }}
      shell: bash
      run: git config --global --add safe.directory "$PWD"

    - name: Set env variables for macOS
      if: ${{ runner.os == 'macOS' }}
      shell: bash
      run: |
        echo "CCACHE_DIR=${{ github.workspace }}/.ccache" >> $GITHUB_ENV
        echo "CONAN_HOME=${{ github.workspace }}/.conan2" >> $GITHUB_ENV

    - name: Set env variables for Linux
      if: ${{ runner.os == 'Linux' }}
      shell: bash
      run: |
        echo "CCACHE_DIR=/root/.ccache" >> $GITHUB_ENV
        echo "CONAN_HOME=/root/.conan2" >> $GITHUB_ENV

    - name: Set CCACHE_DISABLE=1
      if: ${{ inputs.disable_ccache == 'true' }}
      shell: bash
      run: |
        echo "CCACHE_DISABLE=1" >> $GITHUB_ENV

    - name: Create directories
      shell: bash
      run: |
        mkdir -p "$CCACHE_DIR"
        mkdir -p "$CONAN_HOME"
