name: Ensure Site Builds Cleanly
on:
  push:
    branches: [ master ]

jobs:
  build-site:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install GraphicsMagick
        run: sudo apt install graphicsmagick

      - name: Install Chrome
        run: |
          wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
          sudo apt install ./google-chrome-stable_current_amd64.deb

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: '14'
          cache: 'npm'

      - name: Restore node_modules cache
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node_modules-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node_modules

      - name: Restore Asset Cache
        uses: actions/cache@v2
        with:
          key: if-cache
          path: |
            ./if-cache/*
            ./if-cache.json
            ./twitter-cache.json

      - name: Install node dependencies
        run: npm ci

      - name: Lint JS code
        run: npm test

      - name: Build site
        run: npm run build

      - name: (EN) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/en.pdf" \
          http://127.0.0.1:8080/en/printable/index.html

      - name: (ZH) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/zh.pdf" \
          http://127.0.0.1:8080/zh/printable/index.html

      - name: (DE) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/de.pdf" \
          http://127.0.0.1:8080/de/druckbar/index.html

      - name: (HU) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/hu.pdf" \
          http://127.0.0.1:8080/hu/nyomtathato/index.html

      - name: (PL) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/pl.pdf" \
          http://127.0.0.1:8080/pl/do-druku/index.html

      - name: (PT) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/pt.pdf" \
          http://127.0.0.1:8080/pt/imprimivel/index.html

      - name: (FR) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/fr.pdf" \
          http://127.0.0.1:8080/fr/a-imprimer/index.html

      - name: (NL) Generate PDF from HTML
        run: |
          google-chrome --headless --print-to-pdf-no-header \
          --run-all-compositor-stages-before-draw --print-to-pdf="${{ github.workspace }}/dist/nl.pdf" \
          http://127.0.0.1:8080/nl/afdrukbaar/index.html

      - name: List dist
        run: ls -la ${{ github.workspace }}/dist

      - name: Upload PDFs
        uses: actions/upload-artifact@v3
        with:
          name: site-pdfs
          path: |
            ${{ github.workspace }}/dist/**.pdf