name: Build TokenPay Node.js Client

on: [push]

jobs:
  build:
    name: Build the Library
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js version 12.x
        uses: actions/setup-node@v1
        with:
          node-version: "12.x"

      - name: Install Dependencies
        run: npm i

      - name: Build the Library
        run: npm run build

      - name: Run Tests
        run: npm run test

      - name: Package Artifacts
        run: |
          .github/scripts/pack-artifacts.sh

      - name: Upload Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: packed-library
          path: ${{ env.ARTIFACT_FILENAME }}
          if-no-files-found: error

      - name: Upload Runtime Check Script
        uses: actions/upload-artifact@v4
        with:
          name: runtime-check-script
          path: .github/scripts/check-runtime.js

  test-runtime:
    name: Test Runtime on Node Versions
    runs-on: ubuntu-latest
    needs: build

    strategy:
      matrix:
        node-version: [4.x, 6.x, 8.x, 10.x, 12.x, 14.x]

    steps:
      - name: Use Node.js version ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      - name: Switch Directories
        run: |
          cd /home/runner/work/tokenpay-node-client/
          mkdir check-runtime
          cd check-runtime
          npm init -y

      - name: Download Packed Library
        uses: actions/download-artifact@v4
        with:
          name: packed-library
          path: /home/runner/work/tokenpay-node-client/check-runtime/

      - name: Download Runtime Check Script
        uses: actions/download-artifact@v4
        with:
          name: runtime-check-script
          path: /home/runner/work/tokenpay-node-client/check-runtime/
          
      - name: Execute Runtime Checks
        working-directory: /home/runner/work/tokenpay-node-client/check-runtime/
        run: |
          ls -R
          FILENAME=$(ls *.tgz | tail -n 1)
          npm i $FILENAME
          node check-runtime.js
