name: coverage

on:
  schedule:
    - cron: "0 8 * * *"
  workflow_dispatch:

env:
  RUSTFLAGS: "-C instrument-coverage"

jobs:
  coverage:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable]
    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Environment
      run: bin/environment.sh

    - name: Install Prerequisites
      run: bin/install_prerequisites_ubuntu.sh

    - name: Install Rust
      run: bin/install_rust_latest.sh

    - name: Install Grcov
      run: bin/install_grcov.sh

    - name: Build
      run: cargo build

    - name: Test Prerequisites
      run: bin/test/test_prerequisites.sh

    - name: Run Integration Tests
      run: |
        export LLVM_PROFILE_FILE="hurl-test-integration-%p-%m.profraw"
        export PATH="$PWD/target/debug:$PATH"
        bin/test/test_integ.sh
    - name: Build Report
      run: | 
        grcov . --binary-path target/debug -s . -t html --branch --ignore-not-existing -o ./coverage/

    - name: Init git bot context
      uses: crazy-max/ghaction-import-gpg@v5
      with:
        gpg_private_key: ${{ secrets.HURL_BOT_GPG_PRIVATE_KEY }}
        passphrase: ${{ secrets.HURL_BOT_GPG_PRIVATE_KEY_PASSPHRASE }}
        git_committer_name: "hurl-bot"
        git_committer_email: "bot@hurl.dev"
        git_user_signingkey: true
        git_commit_gpgsign: true

    - name: Deploy Github Pages
      uses: peaceiris/actions-gh-pages@v3
      with:
        personal_token: ${{ secrets.HURL_BOT_TOKEN }}
        user_name: 'hurl-bot'
        user_email: 'bot@hurl.dev'
        publish_branch: github-pages
        publish_dir: coverage
        destination_dir: coverage

    - name: Archive Artifacts
      uses: actions/upload-artifact@v3
      if: ${{ always() }}
      with:
        name: coverage
        path: |
          coverage
          *.profraw

