name: CI, testing, coverage, and publishing to NPM (master branch)

on:
  push:
    branches:
      - 'master'
  pull_request:
    branches:
      - 'master'

jobs:
  build-unix:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: ['ubuntu-latest', 'macos-latest']
        node-version: [12.x, 14.x]
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        id: checkout

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
        id: node
      - run: npm ci
      - run: npm run build --if-present
      - run: npm audit fix
      - run: npm test
        env:
          FIGMA_TOKEN: ${{ secrets.FIGMA_TOKEN }}
          FIGMA_URL: ${{ secrets.FIGMA_URL }}
      - run: npm install -g
      - run: npm run figmagic
        env:
          FIGMA_TOKEN: ${{ secrets.FIGMA_TOKEN }}
          FIGMA_URL: ${{ secrets.FIGMA_URL }}
      - run: \[ -d .figmagic \]
      - run: \[ -f .figmagic/figma.json \]
        env:
          CI: true

      - name: Send coverage report with Codecov
        uses: codecov/codecov-action@v1
        id: coverage
      - run: bash <(curl -s https://codecov.io/bash) -f jest-coverage/clover.xml

  build-windows:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: ['windows-latest']
        node-version: [12.x, 14.x]
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        id: checkout

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
        id: node
      - run: npm ci
      - run: npm run build --if-present
      - run: npm audit fix
      - run: npm test
        env:
          FIGMA_TOKEN: ${{ secrets.FIGMA_TOKEN }}
          FIGMA_URL: ${{ secrets.FIGMA_URL }}
      - run: npm install -g
      - run: npm run figmagic
        env:
          FIGMA_TOKEN: ${{ secrets.FIGMA_TOKEN }}
          FIGMA_URL: ${{ secrets.FIGMA_URL }}
      - run: Test-Path .figmagic
      - run: Test-Path .figmagic/figma.json -PathType leaf
        env:
          CI: true

  publish-npm:
    needs: ['build-unix', 'build-windows']
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm ci
      - run: git config --global user.email "mikaelvesavuori@gmail.com"
      - run: git config --global user.name "Mikael Vesavuori"
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.npm_token }}
