# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: NodeJS

on:
  push:
    paths:
      - '.github/workflows/js.yml'
      - 'ci/docker/*js.dockerfile'
      - 'ci/scripts/js_*'
      - 'js/**'
  pull_request:
    paths:
      - '.github/workflows/js.yml'
      - 'ci/docker/*js.dockerfile'
      - 'ci/scripts/js_*'
      - 'js/**'

env:
  ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
  ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}

jobs:

  docker:
    name: AMD64 Debian 10 NodeJS 14
    runs-on: ubuntu-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    steps:
      - name: Checkout Arrow
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch Submodules and Tags
        run: ci/scripts/util_checkout.sh
      - name: Free Up Disk Space
        run: ci/scripts/util_cleanup.sh
      - name: Setup Python
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Setup Archery
        run: pip install -e dev/archery[docker]
      - name: Execute Docker Build
        run: |
          sudo sysctl -w kernel.core_pattern="core.%e.%p"
          ulimit -c unlimited
          archery docker run debian-js
      - name: Docker Push
        if: success() && github.event_name == 'push' && github.repository == 'apache/arrow'
        continue-on-error: true
        run: archery docker push debian-js

  macos:
    name: AMD64 MacOS 10.15 NodeJS ${{ matrix.node }}
    runs-on: macos-latest
    if: github.event_name == 'push'
    strategy:
      fail-fast: false
      matrix:
        node: [14]
    steps:
      - name: Checkout Arrow
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch Submodules and Tags
        shell: bash
        run: ci/scripts/util_checkout.sh
      - name: Install NodeJS
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node }}
      - name: Build
        shell: bash
        run: ci/scripts/js_build.sh $(pwd)
      - name: Test
        shell: bash
        run: ci/scripts/js_test.sh $(pwd)

  # TODO(kszucs): the windows build fails with platform specific npm error
  # windows:
  #   name: AMD64 Windows 2019 NodeJS ${{ matrix.node }}
  #   runs-on: windows-latest
  #   if: github.event_name == 'push'
  #   strategy:
  #     fail-fast: false
  #     matrix:
  #       node: [14]
  #   steps:
  #     - name: Checkout Arrow
  #       uses: actions/checkout@v1
  #       with:
  #         submodules: true
  #     - name: Install NodeJS
  #       uses: actions/setup-node@v1
  #       with:
  #         node-version: ${{ matrix.node }}
  #     - name: Install Platform Dependencies
  #       shell: bash
  #       run: npm install -g cross-env
  #     - name: Build
  #       shell: bash
  #       run: ci/scripts/js_build.sh $(pwd)
  #     - name: Test
  #       shell: bash
  #       run: ci/scripts/js_test.sh $(pwd)
