name: React

on:
  workflow_dispatch:
  push:
    paths:
    - "ui/**"
  pull_request:
    paths:
    - "ui/**"
    branches:
    - master

defaults:
  run:
    working-directory: ui

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "14"
      - name: Cache node_modules
        uses: actions/cache@v2
        env:
          cache-name: cache-node-modules
        with:
          path: ~/.yarn
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-
      - name: Setup yarn
        run: yarn
      - name: Prettier
        run: yarn run prettier --check --ignore-unknown src
      - name: ESLint
        run: yarn run eslint --ext .js,.jsx,.ts,.tsx src
      - name: Build webui
        run: yarn build
      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with: 
          name: webui
          path: ui/build/
