name: ci

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Run ./ci/steps/test.sh
        uses: ./ci/container
        with:
          args: ./ci/steps/test.sh

  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Run ./ci/steps/release.sh
        uses: ./ci/container
        with:
          args: ./ci/steps/release.sh
      - name: Upload npm package artifact
        uses: actions/upload-artifact@v2
        with:
          name: npm-package
          path: ./release

  linux-amd64:
    needs: release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Download npm package
        uses: actions/download-artifact@v2
        with:
          name: npm-package
          path: ./release
      - name: Run ./ci/steps/release-static.sh
        uses: ./ci/container
        with:
          args: ./ci/steps/release-static.sh
      - name: Upload release artifacts
        uses: actions/upload-artifact@v2
        with:
          name: release-packages
          path: ./release-packages

  linux-arm64:
    needs: release
    runs-on: ubuntu-arm64-latest
    steps:
      - uses: actions/checkout@v1
      - name: Download npm package
        uses: actions/download-artifact@v2
        with:
          name: npm-package
          path: ./release
      - name: Run ./ci/steps/release-static.sh
        uses: ./ci/container
        with:
          args: ./ci/steps/release-static.sh
      - name: Upload release artifacts
        uses: actions/upload-artifact@v2
        with:
          name: release-packages
          path: ./release-packages

  macos-amd64:
    needs: release
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v1
      - name: Download npm package
        uses: actions/download-artifact@v2
        with:
          name: npm-package
          path: ./release
      - run: brew unlink node@12
      - run: brew install node
      - run: ./ci/steps/release-static.sh
        env:
          # Otherwise we get rate limited when fetching the ripgrep binary.
          # For whatever reason only MacOS needs it.
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload release artifacts
        uses: actions/upload-artifact@v2
        with:
          name: release-packages
          path: ./release-packages
