name: "Browsercore install"
description: "Install deps for the project browsercore"

inputs:
  arch:
    description: 'CPU arch used to select the v8 lib'
    required: false
    default: 'x86_64'
  os:
    description: 'OS used to select the v8 lib'
    required: false
    default: 'linux'
  zig-v8:
    description: 'zig v8 version to install'
    required: false
    default: 'v0.3.4'
  v8:
    description: 'v8 version to install'
    required: false
    default: '14.0.365.4'
  cache-dir:
    description: 'cache dir to use'
    required: false
    default: '~/.cache'
  debug:
    description: 'enable v8 pre-built debug version, only available for linux x86_64'
    required: false
    default: 'false'

runs:
  using: "composite"

  steps:
    - name: Install apt deps
      if: ${{ inputs.os == 'linux' }}
      shell: bash
      run: |
        sudo apt-get update
        sudo apt-get install -y wget xz-utils ca-certificates clang make git

    # Zig version used from the `minimum_zig_version` field in build.zig.zon
    - uses: mlugg/setup-zig@v2

    # Rust Toolchain for html5ever
    - uses: dtolnay/rust-toolchain@stable

    - name: Cache v8
      id: cache-v8
      uses: actions/cache@v5
      env:
        cache-name: cache-v8
      with:
        path: ${{ inputs.cache-dir }}/v8
        key: libc_v8_${{ inputs.v8 }}_${{ inputs.os }}_${{ inputs.arch }}_${{ inputs.zig-v8 }}${{inputs.debug == 'true' && '_debug' || '' }}.a

    - if: ${{ steps.cache-v8.outputs.cache-hit != 'true' }}
      shell: bash
      run: |
        mkdir -p ${{ inputs.cache-dir }}/v8

        wget -O ${{ inputs.cache-dir }}/v8/libc_v8.a https://github.com/lightpanda-io/zig-v8-fork/releases/download/${{ inputs.zig-v8 }}/libc_v8_${{ inputs.v8 }}_${{ inputs.os }}_${{ inputs.arch }}${{inputs.debug == 'true' && '_debug' || '' }}.a

    - name: install v8
      shell: bash
      run: |
        mkdir -p v8
        ln -s ${{ inputs.cache-dir }}/v8/libc_v8.a v8/libc_v8${{inputs.debug == 'true' && '_debug' || '' }}.a
