name: "build-and-test"
on: # rebuild any PRs and main branch changes
  pull_request:
  push:
    branches:
      - master
      - "releases/*"

jobs:
  build: # make sure build/ci work properly
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: |
          npm install
          npm run all

      # Update dist files if there is label dependencies
      - name: Update dist files
        if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'dependencies')
        run: |
          if [[ -z $(git status -s) ]]
          then
            echo "No change is required"
          else
            echo "Updating dist directory"
            git config --local user.name "dependabot[bot]"
            git config --local user.email "49699333+dependabot[bot]@users.noreply.github.com"
            git add --update
            git commit --message="Update dist files"
            git push
          fi

      # Fail the build if there is dirty change
      - run: git diff --exit-code

  test: # make sure the action works on a clean machine without building
    needs: [ build ]
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
        version:
          - ""
          - "latest"
          - "v1.37"
          - "v1.37.1"
    runs-on: ${{ matrix.os }}
    permissions:
      contents: read
      pull-requests: read
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v2
      - uses: ./
        with:
          version: ${{ matrix.version }}
          args: --timeout=3m --issues-exit-code=0 ./sample/...
          only-new-issues: true

  test-go-mod-version:
    needs: [ build ]
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    runs-on: ${{ matrix.os }}
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v2
      - uses: ./
        with:
          working-directory: sample-go-mod
          args: --timeout=3m --issues-exit-code=0 ./...
