name: PR Workflows

# Run action on pull request event
on: [pull_request]


jobs:
  # Build exampleSite
  build:
    runs-on: ubuntu-latest
    steps:
    # checkout to the commit that has been pushed
    - uses: actions/checkout@v4.1.1

    - name: Setup Node
      uses: actions/setup-node@v4
      with:
        node-version: 18

    - name: Install node modules
      run: npm install

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v3.0.0
      with:
        hugo-version: 'latest'
        extended: true

    - name: Build
      run: |
        hugo --minify


  lighthouse-check:
    runs-on: ubuntu-latest
    steps:
    - name: Waiting for Netlify Preview
      uses: kamranayub/wait-for-netlify-action@v2.1.1
      id: preview
      with:
        site_name: "toha"
        max_timeout: 300
      env:
        NETLIFY_TOKEN: ${{secrets.NETLIFY_TOKEN}}

    - name: Run Lighthouse
      uses: foo-software/lighthouse-check-action@v12.0.1
      id: lighthouseCheck
      with:
        gitHubAccessToken: ${{secrets.GITHUB_TOKEN}}
        emulatedFormFactor: 'all'
        prCommentEnabled: true
        prCommentSaveOld: true
        timeout: 5
        urls: "${{ steps.preview.outputs.url }},${{ steps.preview.outputs.url }}/posts/,${{ steps.preview.outputs.url }}/posts/markdown-sample/,${{ steps.preview.outputs.url }}/posts/shortcodes/"

  # Check for any broken links
  markdown-link-check:
    runs-on: ubuntu-latest
    steps:
    # checkout to latest commit
    - uses: actions/checkout@master

    - name: Waiting for Netlify Preview
      uses: kamranayub/wait-for-netlify-action@v2.1.1
      id: preview
      with:
        site_name: "toha"
        max_timeout: 300
      env:
        NETLIFY_TOKEN: ${{secrets.NETLIFY_TOKEN}}

    - name: Link Checker
      id: lychee
      uses: lycheeverse/lychee-action@v2.1.0
      env:
        GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
      with:
        args: "--verbose --exclude-mail ${{steps.preview.outputs.url}} --exclude=['https://www.udemy.com/']"
        output: lychee/out.md

    - name: Comment Broken Links
      if: ${{ steps.lychee.outputs.exit_code != 0 }}
      uses: marocchino/sticky-pull-request-comment@v2
      with:
        path: lychee/out.md

    - name: Fail workflow if broken links found
      if: ${{ steps.lychee.outputs.exit_code != 0 }}
      run: exit 1
