name: Check new libXRPL

on:
  repository_dispatch:
    types: [check_libxrpl]

concurrency:
  # Only cancel in-progress jobs or runs for the current workflow - matches against branch & tags
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  CONAN_PROFILE: gcc

jobs:
  build:
    name: Build Clio / `libXRPL ${{ github.event.client_payload.version }}`
    runs-on: [self-hosted, heavy]
    container:
      image: ghcr.io/xrplf/clio-ci:latest

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Update libXRPL version requirement
        shell: bash
        run: |
          ./.github/scripts/update-libxrpl-version ${{ github.event.client_payload.version }}

      - name: Prepare runner
        uses: ./.github/actions/prepare_runner
        with:
          disable_ccache: true

      - name: Setup conan
        uses: ./.github/actions/setup_conan
        with:
          conan_profile: ${{ env.CONAN_PROFILE }}

      - name: Run conan and cmake
        uses: ./.github/actions/generate
        with:
          conan_profile: ${{ env.CONAN_PROFILE }}
          conan_cache_hit: ${{ steps.restore_cache.outputs.conan_cache_hit }}
          build_type: Release

      - name: Build Clio
        uses: ./.github/actions/build_clio

      - name: Strip tests
        run: strip build/clio_tests

      - name: Upload clio_tests
        uses: actions/upload-artifact@v4
        with:
          name: clio_tests_check_libxrpl
          path: build/clio_tests

  run_tests:
    name: Run tests
    needs: build
    runs-on: [self-hosted, heavy]
    container:
      image: ghcr.io/xrplf/clio-ci:latest

    steps:
      - uses: actions/download-artifact@v4
        with:
          name: clio_tests_check_libxrpl

      - name: Run clio_tests
        run: |
          chmod +x ./clio_tests
          ./clio_tests

  create_issue_on_failure:
    name: Create an issue on failure
    needs: [build, run_tests]
    if: ${{ always() && contains(needs.*.result, 'failure') }}
    runs-on: ubuntu-latest

    permissions:
      contents: write
      issues: write

    steps:
      - uses: actions/checkout@v4

      - name: Create an issue
        uses: ./.github/actions/create_issue
        env:
          GH_TOKEN: ${{ github.token }}
        with:
          labels: "compatibility,bug"
          title: "Proposed libXRPL check failed"
          body: >
            Clio build or tests failed against `libXRPL ${{ github.event.client_payload.version }}`.

            Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
