name: test

on: [push, pull_request]

jobs:
  setup:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: cache package-lock.json
        uses: actions/cache@v1
        with:
          path: package-temp-dir
          key: lock-${{ github.sha }}

      - name: create package-lock.json
        run: npm i --package-lock-only

      - name: hack for singe file
        run: |
          if [ ! -d "package-temp-dir" ]; then
            mkdir package-temp-dir
          fi
          cp package-lock.json package-temp-dir

      - name: cache node_modules
        id: node_modules_cache_id
        uses: actions/cache@v1
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}

      - name: install
        if: steps.node_modules_cache_id.outputs.cache-hit != 'true'
        run: npm ci

  compile:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: restore cache from package-lock.json
        uses: actions/cache@v1
        with:
          path: package-temp-dir
          key: lock-${{ github.sha }}

      - name: restore cache from node_modules
        uses: actions/cache@v1
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}

      - name: cache lib
        uses: actions/cache@v1
        with:
          path: lib
          key: lib-${{ github.sha }}

      - name: cache es
        uses: actions/cache@v1
        with:
          path: es
          key: es-${{ github.sha }}

      - name: compile
        run: npm run compile
    needs: setup

  lint:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: restore cache from package-lock.json
        uses: actions/cache@v1
        with:
          path: package-temp-dir
          key: lock-${{ github.sha }}

      - name: restore cache from node_modules
        uses: actions/cache@v1
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}

      - name: lint
        run: npm run lint
    needs: setup

  node:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

        # with:
        #   token: ${{ secrets.ACCESS_TOKEN }}
      # - name: Checkout submodules
      #   uses: actions/checkout@v2
      #   with:
      #     repository: tangjinzhou/antdv-demo
      #     token: ${{ secrets.ACCESS_TOKEN }}
      #     path: antdv-demo
      #     submodules: true

      - name: restore cache from package-lock.json
        uses: actions/cache@v1
        with:
          path: package-temp-dir
          key: lock-${{ github.sha }}

      - name: restore cache from node_modules
        uses: actions/cache@v1
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}

      - name: test
        run: npm test
    needs: setup
