name: 'Pull Request'

on:
  pull_request_target:
    types: [assigned, opened, synchronize, reopened]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: nrwl/nx-set-shas@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'
          cache: 'yarn'
      - run: yarn install --frozen-lockfile
      - run: yarn lint:affected
      - run: yarn lint:style
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: nrwl/nx-set-shas@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '16'
          cache: 'yarn'
      - run: yarn install --frozen-lockfile
      - run: yarn test:affected
      - uses: codecov/codecov-action@v3
        with:
          directory: './coverage/packages/'
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [14, 16]
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: nrwl/nx-set-shas@v2
      - uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}
          cache: 'yarn'
      - run: yarn install --frozen-lockfile
      - run: yarn build:affected
  pr-preview:
    runs-on: ubuntu-latest
    steps:
      - name: Find Comment
        uses: peter-evans/find-comment@v1
        id: fc
        with:
          issue-number: ${{ github.event.pull_request.number }}
          comment-author: 'github-actions[bot]'
          body-includes: '<!-- pr-preview-comment -->'
      - name: Create comment
        if: steps.fc.outputs.comment-id == ''
        uses: peter-evans/create-or-update-comment@v1
        id: couc
        with:
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            <!-- pr-preview-comment -->
            After the build is complete, you can preview the website here. :coffee: :coffee: :coffee:
      - name: Update comment
        if: steps.fc.outputs.comment-id != ''
        uses: peter-evans/create-or-update-comment@v1
        with:
          comment-id: ${{ steps.fc.outputs.comment-id }}
          body: |
            <!-- pr-preview-comment -->
            After the build is complete, you can preview the website here. :coffee: :coffee: :coffee:
          edit-mode: replace
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: actions/setup-node@v2
        with:
          node-version: '16'
          cache: 'yarn'
      - run: yarn install --frozen-lockfile
      - run: yarn nx build site --configuration=production --skip-nx-cache
      - run: cp ./dist/packages/site/index.html ./dist/packages/site/200.html
      - uses: dswistowski/surge-sh-action@v1
        with:
          domain: 'react-devui-${{ github.sha }}.surge.sh'
          project: './dist/packages/site'
          login: ${{ secrets.SURGE_LOGIN }}
          token: ${{ secrets.SURGE_TOKEN }}
      - name: Update comment
        if: steps.fc.outputs.comment-id == ''
        uses: peter-evans/create-or-update-comment@v1
        with:
          comment-id: ${{ steps.couc.outputs.comment-id }}
          body: |
            <!-- pr-preview-comment -->
            Website [preview](//react-devui-${{ github.sha }}.surge.sh) has been generated!  :tada: :tada: :tada:
          edit-mode: replace
      - name: Update comment
        if: steps.fc.outputs.comment-id != ''
        uses: peter-evans/create-or-update-comment@v1
        with:
          comment-id: ${{ steps.fc.outputs.comment-id }}
          body: |
            <!-- pr-preview-comment -->
            Website [preview](//react-devui-${{ github.sha }}.surge.sh) has been generated!  :tada: :tada: :tada:
          edit-mode: replace