# Runs whenever a PR is merged:
# - attempt to backports fixes
# - upload nightly docs
#
# Future:
# - upload nightly CLI builds
# - upload nightly vscode extension
# - upload benchmarks
# - compute coverge
#
# Note that direct commits to master circumvent this workflow!

name: Backport merged pull request
on:
  pull_request_target:
    types: [closed]

permissions:
  contents: write # so it can comment
  pull-requests: write # so it can create pull requests

jobs:
  # Attempt to backport a merged pull request to the latest stable release
  backport:
    name: Backport pull request
    runs-on: ubuntu-latest

    # Don't run on closed unmerged pull requests, or pull requests with the "breaking" label
    if: github.event.pull_request.merged && !contains(github.event.pull_request.labels.*.name, 'breaking')
    steps:
      - uses: actions/checkout@v4
      - name: Create backport pull requests
        uses: korthout/backport-action@v3

  # Upload nightly docs to the website
  docs:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
      - run: sudo apt-get update
      - run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libxdo-dev
      - uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly-2024-02-01
      - uses: Swatinem/rust-cache@v2
        with:
          cache-all-crates: "true"
          save-if: ${{ github.ref == 'refs/heads/main' }}

      - name: cargo doc
        run: cargo doc --no-deps --workspace --all-features

      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@v4.7.3
        with:
          branch: gh-pages
          folder: target/doc
          target-folder: api-docs/nightly
          repository-name: dioxuslabs/docsite
          clean: false
          token: ${{ secrets.DEPLOY_KEY }}

# Attempt to backport a merged pull request to the latest stable release
#
# If the backported PR is succesfully merged
# Any PR without the "breaking" label will be attempted to be backported to the latest stable release

# Coverage is disabled until we can fix it
# coverage:
#   name: Coverage
#   runs-on: ubuntu-latest
#   container:
#     image: xd009642/tarpaulin:develop-nightly
#     options: --security-opt seccomp=unconfined
#   steps:
#     - name: Checkout repository
#       uses: actions/checkout@v4
#     - name: Generate code coverage
#       run: |
#         apt-get update &&\
#         apt-get install build-essential &&\
#         apt install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev -y &&\
#         cargo +nightly tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml
#     - name: Upload to codecov.io
#       uses: codecov/codecov-action@v2
#       with:
#         fail_ci_if_error: false


